PostgreSQL中的group_concat使用
发布时间:2020-12-13 17:41:21 所属栏目:百科 来源:网络整理
导读:group_concat是mysql中的一个聚集函数,挺好用的,mysql的group_concat使用可参考:http://my.oschina.net/Kenyon/blog/70480。在postgresql中实现这个功能倒也容易,可以用array的转换或者函数string_agg()来做。 DB环境:postgresql 9.1.2 一.测试数据准备 p
group_concat是mysql中的一个聚集函数,挺好用的,mysql的group_concat使用可参考:http://my.oschina.net/Kenyon/blog/70480。在postgresql中实现这个功能倒也容易,可以用array的转换或者函数string_agg()来做。
DB环境:postgresql 9.1.2 一.测试数据准备 postgres=# create table t_kenyon(id int,name text); CREATE TABLE postgres=# insert into t_kenyon values(1,'kenyon'),(1,'chinese'),'china'),('2','american'),('3','japan'),'russian'); INSERT 0 6 postgres=# select * from t_kenyon order by 1; id | name ----+---------- 1 | kenyon 1 | chinese 1 | china 2 | american 3 | japan 3 | russian (6 rows)二.实现过程 1.以逗号为分隔符聚集 postgres=# select array_to_string(ARRAY(SELECT unnest(array_agg(name))),',') from t_kenyon ; array_to_string --------------------------------------------- kenyon,chinese,china,american,japan,russian (1 row) 2.结合order by排序 postgres=# select array_to_string(ARRAY(SELECT unnest(array_agg(name)) order by 1),') from t_kenyon; array_to_string --------------------------------------------- american,kenyon,russian (1 row) 3.结合group聚集 postgres=# SELECT id,array_to_string(ARRAY(SELECT unnest(array_agg(name)) ),') FROM t_kenyon GROUP BY id; id | array_to_string ----+---------------------- 1 | china,kenyon 2 | american 3 | japan,russian (3 rows)4.以其他分隔符聚集,如*_* postgres=# SELECT id,array_to_string(ARRAY(SELECT unnest(array_agg(name)) order by 1),'*_*') FROM t_kenyon GROUP BY id ORDER BY id; id | array_to_string ----+-------------------------- 1 | china*_*chinese*_*kenyon 2 | american 3 | japan*_*russian (3 rows)
三.总结 postgresql也可以很简单的实现mysql中的group_concat功能,而且更加丰富,可以基于此写一个同名的函数。 (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |
相关内容
- xml解析
- ruby-on-rails – Rails – 设计 – 向控制器添加动作
- ruby-on-rails – NoMethodError – []的未定义方法’find_
- c – 我有两个GPU,我怎么能让一个人做某个CUDA任务?
- ofbiz中的ofbiz-component.xml和加载过程
- objective-c – iOS 5 UINavigationBar删除子视图(图像子视
- 机房收费——组合查询的日期和时间的选择实现
- C# 添加OLE到PPT幻灯片
- [Cocos2d塔防游戏开发]Cocos2dx-3.X完成塔防游戏《王国保卫
- react-native, react-navigation, redux 学习笔记