假设您有一个 SELECT id from table查询(实际情况是一个复杂的查询) ,它会返回几个结果。
SELECT id from table
问题是如何得到所有的 id返回在一个单一的行,逗号分隔?
id
可以将 array ()和 array _ to _ string ()函数与查询结合使用。 使用 SELECT array( SELECT id FROM table );,您将得到如下结果: {1,2,3,4,5,6}
SELECT array( SELECT id FROM table );
然后,如果希望删除{}符号,可以使用 array _ to _ string ()函数并使用逗号作为分隔符,因此: SELECT array_to_string( array( SELECT id FROM table ), ',' )将得到如下结果: 1,2,3,4,5,6
SELECT array_to_string( array( SELECT id FROM table ), ',' )
SELECT string_agg(id::text, ',') FROM table
需要 PostgreSQL 9.0,但这不是问题。
您可以使用 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
使用 array _ to _ string () & array ()函数。
select array_to_string(array(select column_name from table_name where id=5), ', ');
SELECT array_agg(id, ',') FROM table
{1,2,3,4}
我正在使用 Postgres 11,而 EntityFramework 正在以整数数组的形式获取它。
使用下面的查询,它将工作,并给出确切的结果。
SELECT array_to_string(array_agg(id), ',') FROM table
输出 : {1,2,3,4,5}