我有一个表用户:
user_id | user_name
1 | John
2 | Ann
3 | Max
4 | James
和群组:
group_id | group_name
1 | Coders
2 | Music Fans
3 | Car Owners
还有第三个表 users_to_groups ,其中包含用户和组之间的引用。每个组可以包含多个用户。
id | user_id | group_id
如何在行中显示群组名称及其中所有用户的列表的所有群组列表如下:
id | group_name | listofusers
1 | Music Fans | John, Ann, James, Max
2 | Car Owners | John, Ann
3 | Coders | Max, Ann
答案 0 :(得分:1)
使用string_agg()
select g.group_id,
g.group_name,
string_agg(u.user_name, ', ' order by u.user_name) as listofusers
from groups g
join users_to_groups utg on utg.group_id = g.group_id
join users u on u.user_id = utg.user_id
group by g.group_id, g.group_name
order by g.group_id;