你好IM试图找出我如何能够得到共同的朋友
我目前在思考这个问题时遇到了问题。
我有一个名为“users”的表,这就是它的外观
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,并且我转到用户的朋友列表,我想看看我们有什么共同的朋友。这样做的正确sql是什么?
答案 0 :(得分:2)
假设用户1无法与User 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