问题
(have done this before, but memory fades, as does goggle)
wish to get select from users
with the tag.tag_id
s for each user returned as an array.
select usr_id, name, (select t.tag_id from tags t where t.usr_id = u.usr_id) as tag_arr from users u;
with the idea embedded query tag_arr
would be an array
回答1:
Use the aggregate function:
select
usr_id,
name,
array_agg(tag_id) as tag_arr
from users
join tags using(usr_id)
group by usr_id, name
or an array constructor from the results of a subquery:
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
The second option is simple and fast while the first one is more general, e.g. in cases when you need to use more than one aggregates.
来源:https://stackoverflow.com/questions/31453151/in-postgres-select-return-a-column-subquery-as-an-array