postgresql如何实现group_concat功能
2013-04-26 10:29
309 查看
MySQL有个聚集函数group_concat, 它可以按group的id,将字段串联起来,如
表:id name
---------------
1 A
2 B
1 B
SELECT id, group_concat(name) from xxx group by id
得出的结果为
id group_concat(name)
---------------------------
1 A,B
2 B
PostgreSQL没有现成的group_concat聚集函数,但可以自定义聚集函数,所以可以容易的实现这功能。
自定义聚集函数 group_concat
CREATE AGGREGATE group_concat(anyelement)
(
sfunc = array_append, -- 每行的操作函数,将本行append到数组里
stype = anyarray, -- 聚集后返回数组类型
initcond = '{}' -- 初始化空数组
);
参数anyelement匹配任何类型,聚集后返回数组类型anyarray,该函数的功能是将每行的记录附加到数组里。
SELECT id, group_concat(name) from xxx group by id
得出的结果为
id array_accum(name)
---------------------------
1 {'A','B'}
2 {'B'}
array_accum(name)为数组类型,再用array_to_string函数将数组转换为字符串
SELECT id, array_to_string(group_concat(name),',') from xxx group by id
就可以得到group_concat相同的结果了。
但MySQL的group_concat的功能很强,比如可以排序等,postgresql若要模拟它,只能自己定义一个增强型的函数比如array_to_string_plus,可以对数组进行排序后再concat,这里就不用多述,留给各位动脑筋吧。
相关文章推荐
- postgresql如何实现group_concat功能
- postgresql如何实现group_concat功能
- PostgreSQL如何实现MySQL中的group_concat聚集函数(简单的拼接功能)
- postgreSQL中的array_to_string函数和如何实现group_concat
- SQL SERVER 合并重复行,行列转换(sql server2000 里面如何实现oracle10g的 wmsys.wm_concat() 的功能?)
- Hive中实现group concat功能(不用udf)
- Hive中实现group concat功能(不用udf)
- PostgreSQL9.2的聚焦函数模拟实现group_concat
- PostgreSql实现mysql的group_concat的聚合操作
- Sybase数据库实现等效的mysql中group_concat功能
- 实现类似mysql group_concat的功能
- Mysql group_concat的反向应用如何实现?
- Sybase数据库实现等效的mysql中group_concat功能
- MySQL中GROUP_CONCAT函数长度限制处理/实现行转列的功能
- sql server中如何用sql实现类似于mysql的CONCAT()函数的功能?
- 如何在HiveQL里面实现group_concat
- Hive中实现group concat功能(不用udf)
- EBS OAF开发中如何实现功能页签(Global Tab)
- Php如何实现下载功能超详细流程分析
- Django的objects查询数据实现group_by功能,绕开自己挖的坑