我有一个postgresql数组a = [key1,key2,...]
,主键和表foo
。
检查表a
中是否存在foo
中所有主键的最佳方法是什么?
澄清一下:我正在寻找一个返回TRUE
的查询,当且仅当数组a
中的所有键都存在于表foo
中时。
谢谢!
答案 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的例子(在页面中间)。
如果这不符合您的要求,请在评论中详细说明,请尽可能具体。