我正在尝试在postgresql中编写一个查询,它将执行以下操作: 我想给出一个id数组,在我的数据库中查找它们,如果没有与该id相关联的行,则只返回id(来自输入)。
例如:
输入:
(1,2,3,4,5)
表:
id | name
---------
1 bobby
5 michael
6 amy
10 clare
输出:
2,3,4
我一直在调查CASE,使用NOT IN和常规SELECT,但我似乎无法想出这个。
提前致谢!
答案 0 :(得分:1)
试试这个:
SELECT t1.v
FROM (VALUES (1), (2), (3), (4), (5)) t1(v)
LEFT JOIN mytable t2 ON t1.v = t2.id
WHERE t2.id IS NULL
答案 1 :(得分:0)
如果您想使用数组而不是创建临时表,您还可以使用unnest(array)
:
SELECT
t.v
FROM
unnest('{1,2,3,4,5}'::int[]) t(v)
LEFT JOIN
mytable ON t.v = mytable.id
WHERE
mytable.id IS NULL;