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


93

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

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



위의 "중복"은 특히 array_agg()기능 과 관련이 있고 유용 했습니다.
Jay Taylor

답변:


205

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

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


방금이 정보가 유용하다는 것을 알았습니다. 감사!
gooddadmike 2013-08-13

47
적어도 나를 위해 string_agg는 첫 번째 인수에 대해 int를 취하는 것을 좋아하지 않았으므로 string_agg(CAST(id as varchar), ',')대신 다음과 같이 했습니다.
JZC 2015-06-22

17
@JZC 또는 더 쉬운 방법 :string_agg(id::text, ',')
Alphaaa 2011

6
당신은 열 정렬하고자한다면select string_agg(id, ', ' order by id desc) from table
MA의 Hossain 토누을

1
내 쿼리를 중복으로 실행하지만, 그것을 해결STRING_AGG(DISTINCT customer_name, ',')
ChristoKiwi

51

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


1
SELECT array_to_string( id, ',' ) AS id FROM table
알렉스 R.


0

동일한 경우 array_to_string () 및 array () 함수를 사용하십시오.

select array_to_string(array(select column_name from table_name where id=5), ', ');

이것이 사용하는 것보다 낫 string_agg()습니까?
a_horse_with_no_name

-1
SELECT array_agg(id, ',') FROM table

{1,2,3,4}

Postgres 11을 사용하고 있으며 EntityFramework가 정수 배열로 가져오고 있습니다.

당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.