假设您有一个SELECT id from table
查询(真实案例是一个复杂的查询),它会返回几个结果。
问题是如何让所有id
单行返回,逗号分隔?
答案 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则将其作为整数数组来获取。