(以前做过这个,但是内存会消失,就像护目镜一样)
希望从作为数组返回的每个用户的users
中选择tag.tag_id
。
select usr_id, name, (select t.tag_id from tags t where t.usr_id = u.usr_id) as tag_arr from users u;
嵌入式查询tag_arr
的想法是一个数组
答案 0 :(得分:9)
select
usr_id,
name,
array_agg(tag_id) as tag_arr
from users
join tags using(usr_id)
group by usr_id, name
或来自子查询结果的array constructor:
select
u.usr_id,
name,
array(select tag_id from tags t where t.usr_id = u.usr_id) as tag_arr
from users u
第二个选项简单快速,而第一个选项更通用,例如在需要使用多个聚合的情况下。