这是我的问题的延续在这里
因此,基本上,我想获取不是我朋友的用户。但是,如果用户刚刚注册并且还没有朋友,则他应该能够看到所有用户而不是他的朋友。
请在这里检查我的sql小提琴
Users
id username
1 kyle
2 jane
3 jim
4 carla
Friends
id username friend
1 kyle jane
2 jane kyle
3 kyle jim
4 jim kyle
当我查询凯尔不是他的朋友时:
SELECT * FROM users AS u
WHERE u.username NOT IN
(
SELECT f.username FROM friends as f
WHERE f.username = 'kyle'
OR f.friend = 'kyle'
)
它显示的是所有用户,而不是他的朋友。但是,当我查询Carla's时,她就包含在结果集中。她还没有朋友,但是她出现在结果集中。我想从结果中删除(自己),只显示尚未显示其朋友的用户。
有任何想法吗?我很乐意为您提供帮助。谢谢!
您的Friends
表应该相关IDs
,而不应该相关Names
。
这就是说,这里是一个将返回所有清单查询非好友为每个用户:
SELECT u1.username as `User`, GROUP_CONCAT(u2.username) as `Not friends with`
FROM Users u1
JOIN Users u2 ON u1.id <> u2.id
LEFT JOIN Friends f ON u1.id = f.user AND u2.id = f.friend
WHERE f.friend IS NULL
GROUP BY u1.id
对于单个用户('jim')相同:
SELECT u1.username as `User`, GROUP_CONCAT(u2.username) as `Not friends with`
FROM Users u1
JOIN Users u2 ON u1.id <> u2.id
LEFT JOIN Friends f ON u1.id = f.user AND u2.id = f.friend
WHERE f.friend IS NULL
AND u1.username = 'jim'
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句