Gunakan fungsi gabungan :
select
usr_id,
name,
array_agg(tag_id) as tag_arr
from users
join tags using(usr_id)
group by usr_id, name
atau konstruktor array dari hasil 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
Opsi kedua adalah kueri satu sumber sederhana sedangkan yang pertama lebih umum, terutama nyaman saat Anda membutuhkan lebih dari satu agregat dari tabel terkait. Selain itu, varian pertama harus lebih cepat pada tabel yang lebih besar.
Perhatikan, bahwa untuk kinerja yang lebih baik usr_id
kolom di kedua tabel harus diindeks. Sementara biasanya users.usr_id
adalah kunci utama, terkadang orang mungkin lupa bahwa indeks kolom referensi juga berguna.