Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/visual-studio-code/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
以逗号分隔列表形式返回结果的PostgreSQL查询_Sql_Postgresql - Fatal编程技术网

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

以逗号分隔列表形式返回结果的PostgreSQL查询,sql,postgresql,Sql,Postgresql,假设您有一个SELECT id from table查询,实际情况是一个复杂的查询,它会返回多个结果 问题是如何在一行中获取所有id返回,以逗号分隔?您可以使用数组和数组到字符串函数来完成查询。 使用SELECT数组从表中选择id;您将得到如下结果:{1,2,3,4,5,6} 然后,如果您希望删除{}号,您可以使用array_to_string函数并使用逗号作为分隔符,因此:SELECT array_to_string array SELECT id FROM table,','将从table中

假设您有一个SELECT id from table查询,实际情况是一个复杂的查询,它会返回多个结果


问题是如何在一行中获取所有id返回,以逗号分隔?

您可以使用数组和数组到字符串函数来完成查询。 使用SELECT数组从表中选择id;您将得到如下结果:{1,2,3,4,5,6}

然后,如果您希望删除{}号,您可以使用array_to_string函数并使用逗号作为分隔符,因此:SELECT array_to_string array SELECT id FROM table,','将从table中获得类似于:1,2,3,4,5,6

SELECT string_aggid::text,','的结果


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

您可以使用psql从任何SQL查询生成CSV:

$ psql
> \o myfile.csv
> \f ','  
> \a
> SELECT col1 AS column1, col2 AS column2 ... FROM ...
生成的myfile.csv将SQL resultset列名作为csv列标题,查询元组作为csv行


h/t

使用数组到字符串和数组函数进行相同的操作

select array_to_string(array(select column_name from table_name where id=5), ', ');
{1,2,3,4}


我使用的是Postgres 11,EntityFramework将其作为整数数组提取。

上述重复的可能副本是相关的和有用的,特别是array_agg函数。我刚才发现这很有用。谢谢请注意,至少对我来说,string_agg不喜欢将int作为它的第一个参数,所以我改为:string_aggCASTid as varchar,“,”。@JZC,或者更简单的是:string_aggid::text,,“如果您想对列排序,请选择string_aggid,”,“order by id desc from TABLE我在查询中遇到了重复项,但用字符串“客户名称”、“选择数组”和“字符串id”、“作为表中的id”解决了它。这比使用字符串“客户名称”更好吗?
SELECT array_agg(id, ',') FROM table