[sql] 결과를 쉼표로 구분 된 목록으로 반환하는 PostgreSQL 쿼리

SELECT id from table여러 결과를 반환 하는 쿼리 (실제 경우는 복잡한 쿼리)가 있다고 가정 해 보겠습니다 .

문제는 id쉼표로 구분 된 단일 행에서 모든 반환 을 얻는 방법입니다 .



답변

SELECT string_agg(id::text, ',') FROM table

PostgreSQL 9.0이 필요하지만 문제가되지 않습니다.


답변

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


답변

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가 정수 배열로 가져오고 있습니다.


답변