gpt4 book ai didi

mysql - 选择用户不是任何人的 friend

转载 作者:行者123 更新时间:2023-12-01 00:27:44 25 4
gpt4 key购买 nike

enter image description here

您好,我有这两个表:users 和 friends(friend_status = 1 表示请求已发送,friend_status = 2 表示他们是 friend )。现在我想选择所有用户都不是任何人的 friend 。怎么做?

假设当前用户是 1。我试过了,但似乎是错误的。因为它只显示发送请求但尚未确认的用户。

SELECT user_id, name, email
FROM
(
SELECT user_id, name, email
FROM users u INNER JOIN friends f ON u.user_id = f.sender
WHERE f.receiver = 1 AND friend_status <> 2
UNION
SELECT user_id, name, email
FROM users u INNER JOIN friends f ON u.user_id = f.receiver
WHERE f.sender = 1 AND friend_status <> 2
) T
LIMIT 0, 10

最佳答案

SELECT
a.user_id,
a.name,
a.email
FROM
users a
LEFT JOIN
friends b ON
a.user_id IN (b.sender, b.receiver) AND
b.friend_status = 2
WHERE
b.friend_id IS NULL

在这里,我们要LEFT JOIN usersfriends 表,条件是用户已发送或收到请求,并且友谊被接受了。如果用户不满足这两个条件,则连接的 friends 表中的值将为 NULL

现在我们想要满足加入条件的用户,所以我们用WHERE b.friend_id IS过滤掉符合条件的用户NULL,这将选择在好友表(在发送者/接收者字段中)中没有任何对应条目的用户OR 有对应条目但是他们都没有 friend_status2

关于mysql - 选择用户不是任何人的 friend ,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11183428/

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