选择朋友的朋友mysql

时间:2017-05-17 08:53:00

标签: mysql sql

我有两张桌子:

**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

1 个答案:

答案 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