PostgreSQL 中如何实现group_concat

之前在MySQL中使用group_concat,觉得超级好用。

今天在PostgreSQL需要用到这样的场景,就去学习了一下。

在PostgreSQL中提供了array_agg的函数来实现聚合,不过返回的类型是Array。

如果我们需要得到一个字符串类型的数据时,可以通过 array_to_string(array_agg(字段),',')方式来实现。

当然也有更加方便的函数来实现,string_agg(字段,',')。

例如:(查新员工信息,需要把角色合并)

SELECT T.ID,T.username,T.truename,array_to_string(array_agg(b.description),',') as roleName,T.emailaddress,T.project,T.groupname,T.enabled

FROM h_users T

LEFT JOIN user_role A ON T.ID = A.user_id

LEFT JOIN ROLE b ON A.role_id = b.ID

group by T.ID,T.username,T.truename,T.emailaddress,T.project,T.groupname,T.enabled

order by T.username

查询结果:

 

猜你喜欢

转载自blog.csdn.net/wangpei930228/article/details/108999073