我有一個數據庫表,用戶名爲user_id,主鍵爲每個用戶。mysql查詢有助於在社交網站上找到共同朋友
我也有一個表叫朋友有兩個字段,user_id和friend_user_id。
user_id字段始終是兩個user_id中最低的,以避免重複條目。
假設我有兩個用戶,(可以說用戶ID 1和用戶ID 4,儘管他們可能是任何東西)。
如何返回用戶表中的所有行,以便與用戶1和用戶4成爲朋友的用戶(即共同朋友)?
我有一個數據庫表,用戶名爲user_id,主鍵爲每個用戶。mysql查詢有助於在社交網站上找到共同朋友
我也有一個表叫朋友有兩個字段,user_id和friend_user_id。
user_id字段始終是兩個user_id中最低的,以避免重複條目。
假設我有兩個用戶,(可以說用戶ID 1和用戶ID 4,儘管他們可能是任何東西)。
如何返回用戶表中的所有行,以便與用戶1和用戶4成爲朋友的用戶(即共同朋友)?
我會給你幾招:
就像這樣:
UPDATE:這裏的查詢:
select f.friend_user_id from friends f where f.friend_user_id in (
select friend_user_id from friends where user_id=<id_of_user_a>)
and f.user_id=<id_of_user_b>
通過上面的查詢返回的ID將所有可在用戶的id user_a和user_b的共同朋友。如果你想得到關於這些用戶的所有細節(名稱等),那麼這樣做:
select f.friend_user_id,u.* from friends f inner join users u
on u.user_id=f.friend_user_id
where f.friend_user_id in (
select friend_user_id from friends where user_id=<id_of_user_a>)
and f.user_id=<id_of_user_b>
SELECT friends.friend_user_id FROM user, friends
INNER JOIN friends ON friends.user_id = user.user_id
WHERE user.user_id = 1
AND friend.friend_user_id
IN (SELECT friends.friend_user_id
FROM user, friends
INNER JOIN friends ON friends.user_id = user.user_id
WHERE user_id = 4)
哈哈伊卡洛斯 - 非常好。 – Chris
嗯,這是很明顯,它只是SQL語法即時通訊掙扎,但感謝您的輸入 – geoffs3310
@ geoffs3310這只是一個小小的玩笑;)看看克里斯的答案。 (雖然可以寫得更簡潔 - 他不需要那些內部連接) – Icarus