Използвайте агрегирана функция :
select
usr_id,
name,
array_agg(tag_id) as tag_arr
from users
join tags using(usr_id)
group by usr_id, name
или конструктор на масив от резултатите на подзаявка:
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
Втората опция е проста заявка с един източник, докато първата е по-обща, особено удобна, когато имате нужда от повече от един агрегат от свързана таблица. Освен това първият вариант трябва да е по-бърз на по-големи маси.
Имайте предвид, че за по-добра производителност usr_id
колоните и в двете таблици трябва да бъдат индексирани. Докато обикновено users.usr_id
е първичен ключ, понякога човек може да забрави, че индексът на препращащата колона също е полезен.