我有一张这样的桌子:
create table images (
image_id serial primary key,
user_id int references users(user_id),
date_created timestamp with time zone
);
然后,我有一个标签表,用于显示图像可以具有的标签:
create table images_tags (
images_tag_id serial primary key,
image_id int references images(image_id),
tag_id int references tags(tag_id)
);
为了得到我想要的结果,我运行这样的查询:
select image_id,user_id,tag_id from images left join images_tags using(image_id)
where (?=-1 or user_id=?)
and (?=-1 or tag_id in (?, ?, ?, ?)) --have up to 4 tag_ids to search for
order by date_created desc limit 100;
问题是,我想根据唯一image_id
s 的数量进行限制,因为我的输出将如下所示:
{"images":[
{"image_id":1, "tag_ids":[1, 2, 3]},
....
]}
请注意我如何将tag_id
s 分组到一个数组中以进行输出,即使 SQL 为每个tag_id
和image_id
组合返回一行。
所以,当我说 时limit 100
,我希望它适用于 100 个独特image_id
的 s。