有没有办法在两列的组合上查询distinct?假设我有下表,其中LinkedIds是来自同一个表的外键,下表将两者链接在一起。我需要的是一种查询表以获得不同条目的方法,以便在查询图1时获得图2中的结果。
我将返回哪一行并不重要,只要我返回一行即可。无论如何,要用纯SQL来实现这一点吗?
图1。
+----+-------------------+-------------------+
| Id | Table1_LinkedId_1 | Table1_LinkedId_2 |
+----+-------------------+-------------------+
| 1 | 15 | 48 |
| 2 | 48 | 15 |
| 3 | 1 | NULL |
| 4 | NULL | 5 |
| 5 | 12 | 51 |
+----+-------------------+-------------------+图2。
+----+-------------------+-------------------+
| Id | Table1_LinkedId_1 | Table1_LinkedId_2 |
+----+-------------------+-------------------+
| 1 | 15 | 48 |
| 3 | 1 | NULL |
| 4 | NULL | 5 |
| 5 | 12 | 51 |
+----+-------------------+-------------------+发布于 2017-08-30 09:00:31
您可以创建表的有序版本
select
id,
case when Table1_LinkedId_1 < Table1_LinkedId_2 then Table1_LinkedId_1 else Table1_LinkedId_2 end link1,
case when Table1_LinkedId_1 < Table1_LinkedId_2 then Table1_LinkedId_2 else Table1_LinkedId_1 end link2
from links然后,您可以使用此命令来执行重复数据删除
select
min(id) id,
link1,
link2
from
(
select
id,
case when Table1_LinkedId_1 < Table1_LinkedId_2 then Table1_LinkedId_1 else Table1_LinkedId_2 end link1,
case when Table1_LinkedId_1 < Table1_LinkedId_2 then Table1_LinkedId_2 else Table1_LinkedId_1 end link2
from links
) x
group by link1, link2https://stackoverflow.com/questions/45950253
复制相似问题