gpt4 book ai didi

mysql - 隔离 sql​​ 查询中的行

转载 作者:行者123 更新时间:2023-11-30 00:42:43 29 4
gpt4 key购买 nike

我有一个表,线程。我有一个表,thread_participants。我正在尝试隔离与特定 thread_id 和特定 thread_participants.user_id 标识的行。

例如,如果 thread_id = 5 与 thread_participants.user_id = 6 匹配并且没有其他 thread_participants,我想知道 thread_id。

但是,例如,如果 thread_id = 7 与 thread_participants.user_id = 6 和 thread_participants.user_id = 9 匹配,我不想知道 thread_id

类似这样的事情:

SELECT tp.thread_id FROM thread_participants tp WHERE tp.user_id = $user_id AND tp.user_id != ANYBODY ELSE

最佳答案

您可以使用聚合和 having 子句来做到这一点:

SELECT tp.thread_id
FROM thread_participants tp
GROUP BY tp.thread_id
HAVING sum(tp.user_id = $user_id) > 0 and
sum(tp.user_id <> $user_id) = 0;

第一个条件计算表中与用户匹配的每个线程的行数。 > 0 确保至少有一个。

第二个条件计算每个线程与用户不匹配的行数。 = 0 确保不存在。

having 子句的使用非常灵活,可以适应多种条件。

关于mysql - 隔离 sql​​ 查询中的行,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21639499/

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