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

Mysql 选择仅存在于一个特定列表(phplist)中的用户,mysql,sql,phplist,Mysql,Sql,Phplist,我需要一个MYSQL查询来识别phplist上的所有订阅者,这些订阅者只在一个列表中,列表ID为126 涉及两张桌子 一,。phplist_user_user 2.phplist_列表用户 phplist_listuser有两个名为“userid”和“listid”的字段值得关注。 phplist_user_user还有一个“userid”,它是该表中用户字段的键 我们需要一个将列出以下内容的查询: phplist_user_user中用户的所有详细信息 在phplist_listuser上有l

我需要一个MYSQL查询来识别phplist上的所有订阅者,这些订阅者只在一个列表中,列表ID为126

涉及两张桌子

一,。phplist_user_user 2.phplist_列表用户

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的用户详细信息,而不是其他用户的详细信息,因为它们不在126或126上,但也在其他列表上

有人能帮我吗

SELECT * FROM phplist_listuser
WHERE listid <=> 126;
上面的方法可以获取列表126中的每个用户ID,但我现在需要能够检查该用户是否不在任何其他列表中,然后从phplist_user_user获取完整信息


提前感谢,如果这是显而易见的,我很抱歉,但我做了一些工作和研究,无法解决问题。

一种方法是使用EXISTS和notexists:

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);
MySQL具有允许您在选择中使用非聚合列的

这只是为了表明,这可以在MySQL中完成,而无需使用subselect

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
);
SELECT u.*,lu.listid FROM phplist_user_user u
JOIN phplist_listuser lu USING (userid)
GROUP BY u.userid
HAVING COUNT(DISTINCT lu.listid)=1 AND lu.listid=126;