7

我有一张用户表和一张他们在列表中的东西表 -

要显示在列表中有项目的所有用户,我可以加入这两个表usersuser_listsuser_id

例如

select u.emailaddr, u.name from users u
join user_lists uw where u.user_id=uw.user_id
group by u.name

问题:如何显示列表中没有项目的所有用户- 换句话说,我需要一个在表user_lists中没有条目的用户列表

我试过这个,但它无休止地运行

select u.emailaddr, u.name from users u
join user_lists uw where u.user_id<>uw.user_id
group by u.name
4

2 回答 2

11

LEFT JOINIS NULL谓词一起使用:

select u.emailaddr, u.name 
from users u
LEFT join user_lists uw ON u.user_id = uw.user_id
WHERE uw.user_id IS NULL;

或者:谓词NOT IN

select u.emailaddr, u.name 
from users u
WHERE u.user_id NOT IN (SELECT user_id
                        FROM user_lists);
于 2013-03-23T10:58:13.820 回答
0
SELECT u.user_id FROM users u
EXCEPT
SELECT uw.user_id FROM user_lists uw

它将为您提供存在于用户中但不存在于用户列表中的 ID。

于 2013-03-23T11:52:28.643 回答