如何将其他表中的用户名合并到Postgres中的单个列?

时间:2017-11-30 14:47:41

标签: sql postgresql

我有一个表用户

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

1 个答案:

答案 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;
相关问题