选择朋友的朋友mysql
我有两张桌子:选择朋友的朋友mysql,mysql,sql,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
**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
因此,我需要从用户表
中获得“推荐”朋友,即不是我直接朋友的朋友的朋友
我试过这样的东西
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
我不认为你的查询有什么错,只是你没有从结果集中排除你正在搜索朋友的用户。换句话说,用户
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
选择DISTINCT
u、 身份证,
u、 名字
来自朋友a
内部加入朋友b
在a.friend\u id=b.user\u id上
内部连接用户u
ON u.id=b.friend\u id
其中a.user_id=3和
b、 朋友\u id a.用户\u id
提供预期结果user.id=3的预期结果应为1@Strawberry是的,你是对的,我错过了这一点,真丢脸。哦,别这样。没必要对自己这么苛刻:-)我也得到了同样的结果。使用user.id=3
时应返回1
,因为用户id 2有一个朋友用户id1@s78我想你把列别名弄糊涂了。我向您提供的查询为id为3
的用户提供了朋友的朋友。注意,条件是a.user\u id=3
,而不是user.id=3
。哦,我明白了,我的错误。应该有user.id=3