所以我有一個數據庫表,以保持友誼請求。我需要做的是找到丟失的對。這個例子是這樣:SQL查詢幫助查找丟失的對
一個合適的值是
Friend A > Friend B AND Friend B > Friend A
我想要做的就是找到失蹤的夥伴關係。所以,如果你有Friend A > Friend B
,而相反是缺少。我想列出失蹤的人。
我不能爲我的生命環繞我的頭,以實現這一目標的最佳途徑。有什麼建議麼?
所以我有一個數據庫表,以保持友誼請求。我需要做的是找到丟失的對。這個例子是這樣:SQL查詢幫助查找丟失的對
一個合適的值是
Friend A > Friend B AND Friend B > Friend A
我想要做的就是找到失蹤的夥伴關係。所以,如果你有Friend A > Friend B
,而相反是缺少。我想列出失蹤的人。
我不能爲我的生命環繞我的頭,以實現這一目標的最佳途徑。有什麼建議麼?
你可以像下面這樣做
SELECT MIN(user_id) user_id,
MIN(friend_id) friend_id
FROM Table1
GROUP BY LEAST(user_id, friend_id),
GREATEST(user_id, friend_id)
HAVING COUNT(*) = 1
給定的樣本數據的查詢的
| USER_ID | FRIEND_ID | |---------|-----------| | 1 | 2 | | 2 | 1 | | 1 | 3 | | 2 | 4 | | 5 | 6 | | 6 | 5 |
輸出
| USER_ID | FRIEND_ID | |---------|-----------| | 1 | 3 | | 2 | 4 |
這裏是SQLFiddle演示
您可以用not exists
條款做到這一點:
select f.B as A, f.A as B
from friends f
where not exists (select 1
from friends f2
where f2.A = f.B and f2.B = f.A
);
的select
條款爲您提供了缺少的。就個人而言,我只需要select f.*
即可獲得無與倫比的朋友。
您現在正在查詢什麼? – trrrrrrm
標誌着一個答案,接受,如果它解決您的問題 –