Použijte agregační funkci :
select
usr_id,
name,
array_agg(tag_id) as tag_arr
from users
join tags using(usr_id)
group by usr_id, name
nebo konstruktor pole z výsledků dílčího dotazu:
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
Druhou možností je jednoduchý dotaz z jednoho zdroje, zatímco první je obecnější, zvláště výhodný, když potřebujete více než jeden agregační soubor ze související tabulky. Také první varianta by měla být rychlejší na větších stolech.
Všimněte si, že pro lepší výkon usr_id
sloupce v obou tabulkách by měly být indexovány. Zatímco obvykle users.usr_id
je primární klíč, někdy se může zapomenout, že index referenčního sloupce je také užitečný.