以逗号分隔列表形式返回结果的PostgreSQL查询
假设您有一个SELECT id from table查询,实际情况是一个复杂的查询,它会返回多个结果以逗号分隔列表形式返回结果的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中
问题是如何在一行中获取所有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,6SELECT 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