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

时间:2012-08-10 09:39:26

标签: sql postgresql

假设您有一个SELECT id from table查询(真实案例是一个复杂的查询),它会返回几个结果。

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

5 个答案:

答案 0 :(得分:152)

SELECT string_agg(id, ',') FROM table

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

答案 1 :(得分:45)

您可以使用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-

答案 2 :(得分:11)

您可以使用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

答案 3 :(得分:0)

使用array_to_string()和array()函数。

select array_to_string(array(select column_name from table_name where id=5), ', ');

答案 4 :(得分:-1)

SELECT array_agg(id, ',') FROM table

{1,2,3,4}

我正在使用Postgres 11,而EntityFramework则将其作为整数数组来获取。