Verwenden Sie die Aggregatfunktion :
select
usr_id,
name,
array_agg(tag_id) as tag_arr
from users
join tags using(usr_id)
group by usr_id, name
oder ein Array-Konstruktor aus den Ergebnissen einer Unterabfrage:
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
Die zweite Option ist eine einfache Abfrage aus einer Quelle, während die erste generischer ist, was besonders praktisch ist, wenn Sie mehr als ein Aggregat aus einer verknüpften Tabelle benötigen. Außerdem sollte die erste Variante auf größeren Tischen schneller sein.
Beachten Sie, dass für eine bessere Leistung die usr_id
Spalten in beiden Tabellen sollten indiziert werden. Während normalerweise users.usr_id
ein Primärschlüssel ist, kann man manchmal vergessen, dass der Index der referenzierenden Spalte auch nützlich ist.