PostgreSQL:存在于数组中

时间:2016-01-26 20:21:55

标签: sql postgresql

我有一个postgresql数组a = [key1,key2,...],主键和表foo

检查表a中是否存在foo所有主键的最佳方法是什么?

澄清一下:我正在寻找一个返回TRUE的查询,当且仅当数组a中的所有键都存在于表foo中时。

谢谢!

2 个答案:

答案 0 :(得分:1)

您可以计算表和unnested数组的连接中的行数:

select count(*) = array_length(array[1,2], 1)
from foo
join unnest(array[1,2]) id
using (id);

答案 1 :(得分:0)

在问题中含糊不清,我假设您使用某种编程语言编写数组,并且您希望根据表的主键列进行检查。

请看这个使用contains @> operator的例子(在页面中间)。

如果这不符合您的要求,请在评论中详细说明,请尽可能具体。