因此,我有一个数据库表,用于保存友谊请求。我需要做的是找到缺失的对。该示例将是这样的:

一个适当的值是

朋友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/

10-13 01:44