因此,我有一个数据库表,用于保存友谊请求。我需要做的是找到缺失的对。该示例将是这样的:
一个适当的值是
朋友A>朋友B
和
朋友B>朋友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演示
关于mysql - SQL查询帮助查找丢失的对,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/18524280/