Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/mysql/60.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/postgresql/9.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
如何将MySQL组_CONCAT更改为PostgreSQL字符串_agg?_Mysql_Postgresql - Fatal编程技术网

如何将MySQL组_CONCAT更改为PostgreSQL字符串_agg?

如何将MySQL组_CONCAT更改为PostgreSQL字符串_agg?,mysql,postgresql,Mysql,Postgresql,我正在将一些MySQL代码迁移到Postgres,并花了很长时间转换以下代码行: GROUP_CONCAT( DISTINCT id,':',foo,':',bar ORDER BY id ) as id, 这将产生一个逗号分隔的字符串列表,如: id:foo:bar,id2:foo2:bar2 “独特”是为了避免重复 我读过Postgres中与GROUP_CONCAT等效的字符串是string_agg,但我不知道如何让它以同样的方式工作 编辑:我可能已经几乎回答了我自己的问题。我

我正在将一些MySQL代码迁移到Postgres,并花了很长时间转换以下代码行:

GROUP_CONCAT(
    DISTINCT id,':',foo,':',bar ORDER BY id
) as id,  
这将产生一个逗号分隔的字符串列表,如:

id:foo:bar,id2:foo2:bar2

“独特”是为了避免重复

我读过Postgres中与GROUP_CONCAT等效的字符串是string_agg,但我不知道如何让它以同样的方式工作

编辑:我可能已经几乎回答了我自己的问题。我想出了使用CONCAT的解决方案。这样做的问题是,现在排序是由连接的字符串而不是id完成的:

string_agg(DISTINCT CONCAT(
    id::text, ':', foo, ':', bar, ':'
), ',') as id

如果我尝试添加“ORDER BY id”,则会出现错误。

您可以执行以下操作

select 
string_agg(DISTINCT CONCAT(
    id::text, ':', foo, ':', bar, ':'
), ',') as id from (select * from table t order by id) as al