column_fooのテーブルyのどの行にも存在しないtable_xからすべてのIDを選択するにはどうすればよいですか?
単一のSQLクエリでこれを行うのに苦労しています。
SELECT id FROM x
WHERE NOT EXISTS (SELECT * FROM y WHERE foo = id)
または
SELECT id FROM x
WHERE id NOT IN (SELECT foo FROM y)
または、y.foo
がnull許容列でない場合は、次のこともできます。
SELECT x.id FROM x
LEFT JOIN y ON x.id = y.foo
WHERE y.foo IS NULL
多分あなたは次のようなことをすることができます:
SELECT id FROM table_x WHERE id NOT IN (SELECT column_foo FROM table_y);
LEFTJOINを使用します。詳細な説明と例はこちら。
可能であれば、サブクエリは避けたほうがよいでしょう。はINNER JOIN
、結合条件を満たす行のみを返します。
SELECT DISTINCT
x.id
FROM
table_x x
INNER JOIN table_y y ON (x.id = y.id_column_in_y)