2015-05-27 63 views
1
的MySQL查詢

假設我有如下表具有鮮明的對值

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

你需要一個行號.... –

+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的行。除非你需要其他標準來選擇哪一行返回?

+0

太棒了,這很有效。 – theamateurdataanalyst