Postgresql
從列表中查找表中不存在的 ID
假設我有以下架構和數據:
create table images( id int not null ); insert into images values(1), (2), (3), (4), (6), (8);
我想執行如下查詢:
select id from images where id not exists in(4, 5, 6);
但這不起作用。上面的情況應該返回
5
,因為它不存在於表記錄中。
您可以對列表使用外部聯接
values
(類似於上面提到的 Martin 的回答):select t.id from ( values (4),(5),(6) ) as t(id) left join images i on i.id = t.id where i.id is null;
或
not exists
與行建構子一起:select * from ( values (4),(5),(6) ) as v(id) where not exists (select * from images i where i.id = v.id);
如果您願意,也可以將該
values
子句放入 CTE 以使最終查詢更易於閱讀:with v (id) as ( values (4),(5),(6) ) select v.id from v left join images i on i.id = v.id where i.id is null;