7

ユーザーのテーブルと、リストにあるもののテーブルがあります-

リストにアイテムを持っているすべてのユーザーを表示するには、2 つのテーブルusersを結合user_listsします。user_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 JOINで使用:IS 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 に答える