2017-08-16 70 views
2

我有表像下面如何獲得兩列的獨特組合?

member follower 
A   B 
B   C 
C   D 
E   A 
B   A 
B   E 
D   E 

在該上述數據A - B,B - 阿具有相同的關係..我需要唯一的行或者A - B或B - 甲

輸出應該是這樣的低於

member follower 
A   B 
B   C 
C   D 
E   A 
B   E 
D   E 

我已經解決了,但我只是想知道我的邏輯是否合適。

+1

然後添加您的查詢。 –

+0

在此處顯示您的查詢以查看您的評估邏輯。 – gaurav

回答

1

這是你需要的所有查詢:

SELECT DISTINCT LEAST(member,follower) member_1 
      , GREATEST(member,follower) member_2 
      FROM my_table; 

剩下的就是噪音。

0

一種可能的方式是這樣的:

SELECT greatest(t.member,t.follower) as member1, 
     least(t.member,t.follower) as member2 
FROM YourTable t 
GROUP BY 
     greatest(t.member,t.follower) , 
     least(t.member,t.follower) 
+0

非常感謝你...... –

+0

這個group by是爲了不同的值,沒有group by - 會有重複的(我也可以使用不同的,但它有什麼關係?)@Strawberry。雖然我同意刪除第一個。 – sagi

+0

這個論壇裏充斥着數千個錯誤地使用GROUP BY子句的帖子。它從上面提供的看起來無害的陳述開始,以文盲大屠殺結束。所以,'有什麼關係?'你告訴我。 – Strawberry

0

試着這麼做:

SELECT member, follower 
FROM yourtable 
WHERE (SELECT COUNT(*) FROM yourtable WHERE CONCAT(member, follower) = REVERSE(CONCAT(member, follower))) <= 1