Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/mysql/57.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
选择朋友的朋友mysql_Mysql_Sql - Fatal编程技术网

选择朋友的朋友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