从x表中选择不在y表的column_foo中的所有ID

时间:2012-07-07 22:22:39

标签: mysql sql

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

我正在努力用一个SQL查询来做这件事。

4 个答案:

答案 0 :(得分: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

答案 1 :(得分:2)

也许你可以这样做:

SELECT id FROM table_x WHERE id NOT IN (SELECT column_foo FROM table_y);

答案 2 :(得分:1)

你会使用LEFT JOIN。这里有更多的解释和例子。

Visual Joins

答案 3 :(得分:0)

如果可以的话,最好避免使用子查询。 INNER JOIN只会返回符合加入条件的行。

SELECT DISTINCT
    x.id
FROM
    table_x x
    INNER JOIN table_y y ON (x.id = y.id_column_in_y)