0

如何从 table_x 中选择 column_foo 中表 y 的任何行中都不存在的所有 ID?

我正在努力使用单个 SQL 查询来做到这一点。

4

4 回答 4

4
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
于 2012-07-07T22:26:59.547 回答
2

也许您可以执行以下操作:

SELECT id FROM table_x WHERE id NOT IN (SELECT column_foo FROM table_y);
于 2012-07-07T22:26:12.767 回答
1

您将使用 LEFT JOIN。更多解释和例子在这里。

视觉连接

于 2012-07-07T22:26:05.243 回答
0

如果可以的话,最好避免子查询。AnINNER JOIN将仅返回满足连接条件的行。

SELECT DISTINCT
    x.id
FROM
    table_x x
    INNER JOIN table_y y ON (x.id = y.id_column_in_y)
于 2012-07-14T07:34:59.067 回答