【发布时间】:2020-11-13 15:13:10
【问题描述】:
我正在尝试从我的交叉连接选择语句中删除重复的组合,我遵循了this example,但重复的组合仍然存在,它甚至混合了credit_id 和loan_id。我该怎么做?
我的代码
SELECT DISTINCT
CASE WHEN `credit`.`id`<=`loan`.`id` THEN `credit`.`id` ELSE `loan`.`id` END AS `credit_id`,
CASE WHEN `credit`.`id`<=`loan`.`id` THEN `loan`.`id` ELSE `credit`.`id` END AS `loan_id`
FROM
(SELECT `id`,`city` as `City with credit`,`fishing_segment` FROM `data`
WHERE `city` LIKE '%Credit') AS `credit`
CROSS JOIN
(SELECT `id`,`city` as `City with loan`,`fishing_segment` FROM `data`
WHERE `city` LIKE 'Loan%') AS `loan`;
结果
+-----------+---------+
| credit_id | loan_id |
+-----------+---------+
| 1 | 2 |
| 2 | 3 |
| 2 | 5 |
| 1 | 4 |
| 3 | 4 |
| 4 | 5 |
| 1 | 6 |
| 3 | 6 |
| 5 | 6 |
+-----------+---------+
我想要的结果
+-----------+---------+
| credit_id | loan_id |
+-----------+---------+
| 1 | 2 |
| 3 | 4 |
| 5 | 6 |
+-----------+---------+
这是FIDDLE
【问题讨论】:
-
我正在尝试从我的交叉连接选择语句中删除重复的组合显示的输出中没有重复项,每一行都是唯一的。
-
我想要的结果 为什么要存储
(1,2)并删除 (1,4) 和 (1,6)?定义标准...也许您需要简单地添加GROUP BY credit_id并将loan_id表达式包装到MIN()函数中? -
执行
GROUP BY credit_id并将loan_id表达式包装成MIN()。使其显示credit id1,1,1 和loan_id2,4,6
标签: mysql