使用 MySql 查看我朋友的共同好友

Check Mutual Friends from my friend using MySql

第一个table:

user_id | name
1         Me
2         Jeremy
3         Bob
4         Kelvin

第二个table:

user_id | friend_id
1         2
1         3
2         1
2         3
3         1
3         2

所以朋友关系会是这样的:

user_id 1 - 2,3

user_id 2 - 1,3

user_id 3 - 1,2

如果说我是user_id 1 即'Me',那么我需要显示我所有的朋友和共同的朋友。类似于 facebook 'all friends' 功能,将显示共同的朋友。
输入将为“1”,输出将为

user_id2个return1个共同好友

user_id3个return1个共同好友

研究了很久,一直没有尝试出可行的代码。

使用自连接和聚合:

SELECT u.user_id, u.name, 
       COUNT(f3.friend_id) mutual_friends
FROM friends f1
INNER JOIN friends f2 ON f2.user_id = f1.friend_id
INNER JOIN users u ON u.user_id = f2.user_id
LEFT JOIN friends f3 ON f3.user_id = f1.user_id AND f3.friend_id = f2.friend_id
WHERE f1.user_id = ?
GROUP BY u.user_id, u.name;

? 替换为您想要的用户 ID。

参见demo