如何从 table_x 中选择 column_foo 中表 y 的任何行中都不存在的所有 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
不是可为空的列,您甚至可以执行以下操作:
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);
您将使用 LEFT JOIN。更多解释和例子在这里。
如果可以的话,最好避免子查询。AnINNER JOIN
将仅返回满足连接条件的行。
SELECT DISTINCT
x.id
FROM
table_x x
INNER JOIN table_y y ON (x.id = y.id_column_in_y)