Postgresql 选择数组中存在但数据库中不存在的值?

Postgresql 选择数组中存在但数据库中不存在的值?,postgresql,Postgresql,我得到了ID为s:123445的数据库。我需要返回数组中存在的元素(通常在(…)中指定的简单数据列表),但不存在于DB中。 例如,检查值:1、2、3、4、5、6、7 所以查询应该返回6,7。如何使用PostgreSQL实现这一点?如果需要排除列表中所有元素的查询,可以使用NOT in语句 SELECT * FROM someTable WHERE id NOT IN (1, 2, 3, 4, 5); 在您的情况下,您可以从数组中创建查询。这可以使用解决,但 select * from unne

我得到了ID为
s:
123445
的数据库。我需要返回数组中存在的元素(通常在(…)
中指定的简单数据列表),但不存在于DB中。 例如,检查值:
1、2、3、4、5、6、7


所以查询应该返回
6,7
。如何使用PostgreSQL实现这一点?

如果需要排除列表中所有元素的查询,可以使用
NOT in
语句

SELECT * FROM someTable WHERE id NOT IN (1, 2, 3, 4, 5);

在您的情况下,您可以从数组中创建查询。

这可以使用
解决,但

select *
from unnest(array[1,2,3,4,5,6]) as t(id)
except
select id
from the_table
使用一些测试数据:

select *
from unnest(array[1,2,3,4,5,6]) as t(id)
except
select id
from (values (1), (2), (3), (4) ) as the_table(id)
返回

id
--
 5
 6

我不理解输出。另外,当你说“数组”时,你是在使用Postgres数组还是仅仅指一组数字?这不会显示表中不存在的值
with t (id) as (values (1),(2),(3),(4),(5))
select u.id
from
    t
    right join
    unnest(array[1,2,3,4,5,6,7]) u (id) on t.id = u.id
where t.id is null
;
 id 
----
  6
  7