假设我有下表
ID1 ID2
1 a b
2 b a
3 c d
我正在尝试编写一个查询,其中1和2之类的行返回,因为它们基本上是相同的,只是按列反转,所以我编写了以下查询:
SELECT *
FROM Likes A, Likes B
WHERE A.ID2 = B.ID1 AND B.ID2 = A.ID1
返回
ID1 ID2
1 a b
2 b a
对我来说,下一步是仅返回第一步,即仅返回A.ID2 = B.ID1 AND B.ID2 = A.ID1
所在的不同行。
答案 0 :(得分:1)
您可以在连接条件中引入范围比较,将其限制为仅一行。
select l1.*
from likes l1
inner join likes l2
on l1.id1 = l2.id2
and l1.id2 = l2.id1
and l1.id1 < l2.id1
这将选择具有按字母顺序最低的id1的行。除非你需要一些其他标准来选择返回哪一行?