Brug aggregerfunktionen :
select
usr_id,
name,
array_agg(tag_id) as tag_arr
from users
join tags using(usr_id)
group by usr_id, name
eller en array-konstruktør fra resultaterne af en underforespørgsel:
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
Den anden mulighed er en simpel en-kilde-forespørgsel, mens den første er mere generisk, især praktisk, når du har brug for mere end ét aggregat fra en relateret tabel. Den første variant skulle også være hurtigere på større borde.
Bemærk, at usr_id
for bedre ydeevne kolonner i begge tabeller skal indekseres. Mens det typisk er users.usr_id
er en primær nøgle, nogle gange kan man glemme, at indekset for referencekolonnen også er nyttigt.