我有一个包含city[]
列的表,所以我有:
1 city [london]
2 city [london,paris]
如何计算我桌上的城市london
?
答案 0 :(得分:2)
要计算PostgreSQL表中某个值出现在数组中任何位置的所有行,请使用ANY
函数:
SELECT COUNT(*) FROM cities WHERE 'london' = ANY( city );
(假设该表名为cities
)。
谓词'london' = ANY( city )
表示"数组city
中的任何元素都等于'london'
"。这将选择匹配" london"的行,然后计算它们。
答案 1 :(得分:2)
如果表格不是很小,那么你需要在数组列上有一个GIN索引。您将需要使用数组运算符而不是= ANY ()
构造来实际使用此索引:
SELECT count(*) FROM cities WHERE '{london}'::text[] <@ city;
详细说明: