Как сказал пользователь LJ01 в комментариях, вам следует объединить 2 таблицы.Если таблицы пользователей и групп имеют следующую структуру:
CREATE TABLE users (
id BIGINT,
name TEXT,
group_ids BIGINT[]
);
CREATE TABLE groups (
id BIGINT,
name TEXT
);
Вы можете объединить таблицы с помощью следующего запроса:
SELECT u.*,g.name FROM users u JOIN groups g ON g.id = ANY (u.group_ids);
То есть, если таблица пользователейимеет следующие данные:
id name group_ids
1 Test1 {1,2,3}
2 Test2 {3,4}
И есть 4 группы:
id name
1 Group1
2 Group2
3 Group3
4 Group4
Результат запроса будет
1 Test1 {1,2,3} Group1
1 Test1 {1,2,3} Group2
1 Test1 {1,2,3} Group3
2 Test2 {3,4} Group3
2 Test2 {3,4} Group4
ОБНОВЛЕНИЕ Пользователь запросил одну строку для каждого пользователя с группами, объединенными в одну строку.Это может быть достигнуто с помощью следующего запроса:
SELECT u.id, u.name,array_agg(g.name) group_names FROM users u JOIN groups g ON g.id = ANY (u.group_ids)
GROUP BY u.id, u.name;
Если мы выполним этот запрос на данных примера, показанных в начале ответа, мы получим следующие результаты:
u.id u.name group_names
1 Test1 {Group1,Group2,Group3}
2 Test2 {Group3,Group4}