如何选择表中未找到的值?

时间:2014-02-04 15:45:08

标签: sqlite

我想确定表格中不存在的特定 ID。

例如,我有ID 1,2和3,并想知道它们是否存在于表中。

基本上这可以归结为:

SELECT id FROM (
    SELECT 1 AS id
      UNION
    SELECT 2 AS id
      UNION
    SELECT 3 AS id
)
WHERE
    NOT EXISTS (SELECT * FROM table WHERE table.id = id)

假设table的ID为1和4,那么这将产生2和3。

是否有更优雅/简洁/更快的方式在SQLite中获取这些ID?

1 个答案:

答案 0 :(得分:1)

compound SELECT operator EXCEPT允许您执行与NOT EXISTS类似的操作:

SELECT 1 AS id UNION ALL
SELECT 2       UNION ALL
SELECT 3
EXCEPT
SELECT id FROM MyTable

从SQLite 3.8.3开始,您可以在任何可以使用SELECT的地方使用VALUES,但这只是一种不同的语法:

VALUES (1),
       (2),
       (3)
EXCEPT
SELECT id FROM MyTable