我想确定表中不存在的特定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)
假设表具有ID 1和4,那么这将产生2和3.
解决方法
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