對于第一個表:
user_id | name
1 Me
2 Jeremy
3 Bob
4 Kelvin
對于第二個表:
user_id | friend_id
1 2
1 3
2 1
2 3
3 1
3 2
所以朋友關系會是這樣的:
用戶 ID 1 - 2,3
用戶 ID 2 - 1,3
用戶 ID 3 - 1,2
如果說我是 user_id 1,即“我”,那么我需要顯示我所有的朋友并顯示共同的朋友。類似于 facebook 的“所有朋友”功能,將顯示共同的朋友。
輸入將為“1”,輸出將為
user_id 2 回傳 1 個共同好友
user_id 3 回傳 1 個共同好友
我已經研究了很長時間,但還沒有嘗試過可行的代碼。
uj5u.com熱心網友回復:
使用自連接和聚合:
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。
請參閱演示。
轉載請註明出處,本文鏈接:https://www.uj5u.com/houduan/365539.html
