gpt4 book ai didi

mysql - 如何将 MySQL GROUP_CONCAT 更改为 PostgreSQL string_agg?

转载 作者:行者123 更新时间:2023-11-29 10:40:29 25 4
gpt4 key购买 nike

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

GROUP_CONCAT(
DISTINCT id,':',foo,':',bar ORDER BY id
) as id,

这会产生一个逗号分隔的字符串列表,例如:

id:foo:bar,id2:foo2:bar2

“DISTINCT”是为了避免重复。

我读过 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

关于mysql - 如何将 MySQL GROUP_CONCAT 更改为 PostgreSQL string_agg?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45581933/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com