小编典典

如何获得共同朋友的名单

sql

嗨,即时通讯,试图找出我如何能得到共同的朋友

我目前在考虑这个问题时遇到问题。

我有一个名为“用户”的表,这是它的外观

id | name
-----------
1   Kenny
2   Jack
3   Jimmy
4   Chris
5   Meg
6   Jake
7   Micheal
8   Dude

我有一张叫做“友谊”的桌子,这就是它的样子

user_a | user_b 
----------------
4         1        
7         5
8         1
2         4
2         1
5         2
1         6
1         7

user_a向user_b发送一个成为朋友的请求,并且…
BAM有朋友。现在,如果我是用户2,并且我转到用户1s的朋友列表,我想看看我们有什么共同点。什么是正确的SQL做到这一点?


阅读 220

收藏
2021-04-28

共1个答案

小编典典

假设用户1与用户7不可能两次成为好友(这意味着不能与user_a = 1, user_b=7和排成一行user_a = 7, user_b = 1)。

SELECT IF(user_a = 1 OR user_a = 2, user_b, user_a) friend
FROM friendship
WHERE (user_a = 1 OR user_a = 2) OR (user_b = 1 OR user_b = 2)
GROUP BY 1
HAVING COUNT(*) > 1
2021-04-28