查询"朋友的朋友" SQL

时间:2015-06-09 13:59:01

标签: sql database postgresql

我在使用sql时遇到了一些问题...

我有一个包含3列的表: user_id,name,friend_id ;

我需要为每个user_id找到他朋友的朋友,但这些朋友!结果模式应为 user_id | suggested_user_id

我已经搜索了答案,但问题是用户和朋友在同一张桌子上!我对postgresql不是很好,所以请原谅我,如果我不清楚或者这很容易,但我真的需要帮助!

非常感谢

2 个答案:

答案 0 :(得分:2)

会是这样的:

select DISTINCT
    u1.user_id as user_id,u3.user_id as suggested_user_id
    from
    users as u1 
    inner join users as u2 on u1.user_id=u2.friend_id
    inner join users as u3 on u2.user_id=u3.friend_id
where u1.user_id<>u3.user_id

答案 1 :(得分:0)

进行自我加入,即自己加入表:

select t1.user_id, t1.name, t2.friend_id as suggested_user_id
from usertable t1
  join usertable t2 on t1.friend_id = t2.user_id 

也许你想添加

 where t1.user_id <> t2.friend_id 

避免将用户列为自己的朋友。