【问题标题】:How to find common matches for different column values in SQL如何在 SQL 中查找不同列值的共同匹配项
【发布时间】:2021-12-30 23:03:59
【问题描述】:

我有下表“朋友”:

我们的目标是找出有多少用户拥有完全相同的好友列表。 在这种情况下,结果将是 user_id 1 和 user_id 4,因为用户 1 和用户 4 都是“2”和“3”的朋友。

我认为我使用下面的代码走在正确的轨道上:

SELECT * FROM Friends A, Friends B WHERE A.friend_id=B.friend_id AND A.user_id <> B.user_id

但是,我无法弄清楚如何完成查询,以便计算朋友的匹配列表。有人有什么建议吗?

【问题讨论】:

  • 不要使用逗号,使用 INNER JOIN,这个方法从 1995 年就已经过时了。同时提供你使用的 SQL。

标签: sql subquery aliases


【解决方案1】:

您没有提供您的 SQL 类型。

对于 MySQL,您可以将每个用户的好友分组并按此值交叉。默认值为“,”。然后加入同一个表,按同一个好友列表进行比较。

SELECT t1.friends, t1.friends FROM
(
SELECT user_id,GROUP_CONCAT(friend_id) as friends
FROM friends
GROUP BY friend_id
) as t1
JOIN

(
SELECT user_id,GROUP_CONCAT(friend_id) as friends
FROM friends
GROUP BY friend_id
) as t2
on t1.friends = t2.friends

【讨论】:

  • @AATU 如果我的回答对您有帮助,请点赞并将其标记为正确。提前致谢
猜你喜欢
  • 1970-01-01
  • 2019-06-02
  • 2017-08-22
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多