PostgreSQL GROUP_CONCAT相当?

PostgreSQL GROUP_CONCAT相当?,第1张

概述我有一个表,我想为每个id拉一行,字段值连接。 在我的表中,例如,我有这: TM67 | 4 | 32556TM67 | 9 | 98200TM67 | 72 | 22300TM99 | 2 | 23009TM99 | 3 | 11200 我想输出: TM67 | 4,9,72 | 32556,98200,22300TM99 | 2,3 | 23009,11200 在MyS 我有一个表,我想为每个ID拉一行,字段值连接。

在我的表中,例如,我有这:

TM67 | 4  | 32556TM67 | 9  | 98200TM67 | 72 | 22300TM99 | 2  | 23009TM99 | 3  | 11200

我想输出:

TM67 | 4,9,72 | 32556,98200,22300TM99 | 2,3    | 23009,11200

在MysqL中,我能够使用聚合函数GROUP_CONCAT,但是这似乎不工作在这里…有一个等价的Postgresql,或者另一种方法来完成这个?

这可能是一个很好的起点(仅8.4版本):
SELECT ID_fIEld,array_agg(value_fIEld1),array_agg(value_fIEld2)FROM data_tableGROUP BY ID_fIEld

array_agg返回一个数组,但你可以CAST它的文本和编辑根据需要(见下面的澄清)。

在版本8.4之前,您必须在使用之前自己定义它:

CREATE AGGREGATE array_agg (anyelement)(    sfunc = array_append,stype = anyarray,initcond = '{}');

(从Postgresql文档中改写)

说明:

>将数组转换为文本的结果是,生成的字符串以大括号开头和结尾。如果不需要,那些支架需要通过某种方法去除。>将ANYARRAY转换为TEXT可最好地模拟CSV输出,因为在标准CSV样式的输出中包含嵌入的逗号的元素将被双引号。 array_to_string()或string_agg()(在9.1中添加的“group_concat”函数)都使用嵌入的逗号引起字符串,导致结果列表中元素数量不正确。>新的9.1 string_agg()函数不会首先将内部结果转换为TEXT。因此,如果value_fIEld是一个整数,“string_agg(value_fIEld)”将产生一个错误。 “string_agg(value_fIEld :: text)”将是必需的。 array_agg()方法在聚合之后只需要一个转换(而不是每个值的转换)。

总结

以上是内存溢出为你收集整理的PostgreSQL GROUP_CONCAT相当?全部内容,希望文章能够帮你解决PostgreSQL GROUP_CONCAT相当?所遇到的程序开发问题。

如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。

欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/sjk/1173147.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-06-02
下一篇 2022-06-02

发表评论

登录后才能评论

评论列表(0条)

保存