我们说有一个基础:
CREATE TABLE test (
ids integer[]
);
有数据
INSERT INTO test VALUES ('{1, 2, 3, 4}');
INSERT INTO test VALUES ('{5}');
我想在测试数据库中找到任意数组的出现次数,例如:“ {5,1}”,这可以通过什么方式完成?
在我的尝试中,除了找到的元素外,我只能找到数组中元素的总数:
select sum(array_length(array(
(select unnest(ids) except select unnest(array[5,1]))
), 1)) from test;
但是,我需要从传输的数组中发现的确切数目。我怎么能找到。那?
答案 0 :(得分:3)
您可能想要这样:
select count(*) from test, unnest(ids) as id where id =ANY('{5,1}');
或者最多计数一次来自测试的每一行,然后这样做:
select count(*) from test where ids && '{5,1}'
在您的示例中,它们都给出“ 2”,但通常它们做的事情不同。