gpt4 book ai didi

php - MySQL 获取还不是好友的用户(不包括自己)

转载 作者:行者123 更新时间:2023-11-29 23:05:32 24 4
gpt4 key购买 nike

这是我的问题的延续here

所以基本上,我想获取不是我 friend 的用户。但是,如果用户刚刚注册并且还没有 friend ,那么他应该能够看到除他的 friend 之外的所有用户。

请检查我的sql fiddle here

 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

当我查询凯尔不是他的 friend 时:

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'
)

它显示所有用户,而不是他的 friend 。但是,当我查询 Carla 时,她包含在结果集中。她还没有 friend ,但她出现在结果集中。我想从结果中删除 (self),只显示还不是她 friend 的用户。

有什么想法吗?我很乐意感谢任何帮助。谢谢!

最佳答案

您的Friends 表应该关联ID 而不是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

SQL Fiddle

对于单个用户('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'

Single-User Fiddle

关于php - MySQL 获取还不是好友的用户(不包括自己),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28312996/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com