SQL - 从数据库中不存在的输入返回id

时间:2016-05-20 18:55:23

标签: sql postgresql

我正在尝试在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,但我似乎无法想出这个。

提前致谢!

2 个答案:

答案 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

Demo here

答案 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;