首页 > 解决方案 > PostgreSQL:将行输出为逗号分隔的字符串列表

问题描述

在 PostgreSQL 11 上,我想将表的行输出为以逗号分隔的字符串列表:

id,info,name,message

我尝试了以下查询:

SELECT array_to_string(array_agg(t), ',', '')                                                                                                                          
FROM (                                                                      
    SELECT id, info, name, message
    FROM myschema.mytable
) t;

但这输出:

(1,foo,bar,baz),(2,qux,zap,xen)

相反,所需的结果应如下所示:

1,foo,bar,baz
2,qux,zap,xen

什么是正确的查询?

标签: sqlpostgresql

解决方案


你似乎想要:

SELECT id, CONCAT_WS(',', info, name, message)
FROM myschema.mytable;

不需要聚合。您想要的值都在一行中。

当然,您可以包含id在字符串中,而不是作为单独的列:

SELECT CONCAT_WS(',', id, info, name, message)
FROM myschema.mytable;

推荐阅读