gpt4 book ai didi

mysql - 选择仅存在于一个特定列表中的用户 (phplist)

转载 作者:行者123 更新时间:2023-11-30 00:24:46 25 4
gpt4 key购买 nike

我需要一个 MYSQL 查询来识别 phplist 上仅位于一个列表(列表 ID 126)上的所有订阅者。

涉及两个表。

1.) phplist_user_user2.) phplist_listuser

phplist_listuser 有两个值得关注的字段,名为“userid”和“listid”。phplist_user_user 也有一个“userid”,它是该表中用户字段的关键。

我们想要一个将列出以下内容的查询:

用户的所有详细信息(来自 phplist_user_user)在 phplist_listuser 上有一个 listid 126 的条目并且仅位于 listid 126 上,因此它们应该只在 phplist_listuser 中具有 listid 126 的条目,如果它们有任何其他列表,则不应包含它们。

因此,我们想要重新表述上面的内容:位于 listid 126 但不位于任何其他列表中的用户的用户详细信息。

这是表格示例

phplist_listuser
userid listid

1 126

1 32

1 51

2 126

3 126

4 126

5 126

5 127

6 128

在此查询中,我只需要 phplist_user_user 中 ID 为 2、3、4 的用户详细信息,而不是其他 ID,因为它们要么不在 126 上,要么不在 126 上,但也在其他列表上。

有人可以帮我吗?

SELECT * FROM phplist_listuser
WHERE listid <=> 126;

上面的代码可以获取列表 126 中的每个用户 ID,但我现在需要能够检查该用户是否不在任何其他列表中,然后从 phplist_user_user 中提取完整信息。

提前致谢,如果这是显而易见的,我很抱歉,但我投入了一些工作和研究,但无法弄清楚。

最佳答案

一种方法是使用 EXISTS 和 NOT EXISTS:

select * 
from phplist_user_user uu
where exists (select * from phplist_listuser lu where lu.listid = 126 and lu.userid = uu.userid)
and not exists (select * from phplist_listuser lu where lu.listid <> 126 and lu.userid = uu.userid);

编辑:另一种方法是对所有列表用户使用 IN 子句,其中唯一的列表 ID 为 126:

select * 
from phplist_user_user
where userid in
(
select lu.userid
from phplist_listuser lu
group by lu.userid
having min(lu.listid) = 126 and max(lu.listid) = 126
);

关于mysql - 选择仅存在于一个特定列表中的用户 (phplist),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22973634/

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