我在使用sql时遇到了一些问题...
我有一个包含3列的表: user_id,name,friend_id ;
我需要为每个user_id找到他朋友的朋友,但不这些朋友!结果模式应为 user_id | suggested_user_id
我已经搜索了答案,但问题是用户和朋友在同一张桌子上!我对postgresql不是很好,所以请原谅我,如果我不清楚或者这很容易,但我真的需要帮助!
非常感谢
答案 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
避免将用户列为自己的朋友。