作者热门文章
- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我正在将一些 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/
我是一名优秀的程序员,十分优秀!