PostgreSQL查询以逗号分隔列表的forms返回结果

假设你有一个SELECT id from table查询的SELECT id from table (真实的情况是一个复杂的查询),它会返回多个结果。

问题是如何获得所有的id单行返回,逗号分隔?

SELECT string_agg(id, ',') FROM table

需要PostgreSQL 9.0,但这不是问题。

您可以使用array()和array_to_string()函数来查询您的查询。 用SELECT array( SELECT id FROM table ); 你会得到如下结果:{1,2,3,4,5,6}

然后,如果你想删除{}符号,你可以使用array_to_string()函数并使用逗号作为分隔符,所以: SELECT array_to_string( array( SELECT id FROM table ), ',' )将得到如下结果: 1,2,3,4,5,6

你可以使用psql从任何SQL查询生成一个CSV文件:

 $ psql > \o myfile.csv > \f ',' > \a > SELECT col1 AS column1, col2 AS column2 ... FROM ... 

生成的myfile.csv将SQL结果集列名称作为CSV列标题,并将查询元组作为CSV行。

h / t http://pookey.co.uk/wordpress/archives/51-outputting-from-postgres-to-csv