繁体   English   中英

Array_agg替代-PostgreSQL

[英]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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM