我有两张桌子:
**user**
-id
-first_name
**friends**
-id
-user_id
-friend_id
所以,表'用户'有
'id' 'first_name'
1 name_1
2 name_2
3 name_2
和'朋友'
'id' 'user_id' 'friend_id'
1 1 2
2 2 3
3 3 4
4 3 5
所以我需要得到'建议'的朋友,朋友的朋友,而不是我users table
的朋友。
我试过这样的事情
select distinct users.id
from friends a
join friends b on b.user_id = a.friend_id
join users on users.id = b.friend_id
where user.id = 3
答案 0 :(得分:0)
除了您没有从结果集中排除您正在搜索朋友的用户之外,我的查询没有太大问题。换句话说,用户3
可能有其朋友指向用户3
的朋友,因此我们不希望出现此建议。
SELECT DISTINCT
u.id,
u.first_name
FROM friends a
INNER JOIN friends b
ON a.friend_id = b.user_id
INNER JOIN users u
ON u.id = b.friend_id
WHERE a.user_id = 3 AND
b.friend_id <> a.user_id