[英]Array_agg alterantive - PostgreSQL
我使用的是postgreSQL版本8.3.4,该版本不支持函数“ array_agg”
我对这些表的定义是:
create table photos (id integer, user_id integer, primary key (id, user_id));
create table tags (photo_id integer, user_id integer, info text, primary key (user_id, photo_id, info));
我遇到了这个查询,这给了我所需的信息:
SELECT photo_id
FROM tags t
GROUP BY 1
HAVING (SELECT count(*) >= 1
FROM (
SELECT photo_id
FROM tags
WHERE info = ANY(array_agg(t.info))
AND photo_id <> t.photo_id
GROUP BY photo_id
HAVING count(*) >= 1
) t1
)
但由于版本原因,我无法使用它。 我可以使用此查询的替代查询吗?
select
t2.photo_id, count(*)
from tags t1
join tags t2 on t1.info = t2.info and t1.photo_id <> t2.photo_id
group by t2.photo_id
;
如果您想要精确的k,则HAVING count = k
k
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.