MySQL查询具有不同的值对

时间:2015-05-27 23:33:57

标签: mysql sql

假设我有下表

  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所在的不同行。

1 个答案:

答案 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的行。除非你需要一些其他标准来选择返回哪一行?