Kueri PostgreSQL untuk mengembalikan hasil sebagai daftar yang dipisahkan koma


95

Katakanlah Anda memiliki SELECT id from tablekueri (kasus sebenarnya adalah kueri kompleks) yang mengembalikan Anda beberapa hasil.

Masalahnya adalah bagaimana cara mendapatkan semua idpengembalian dalam satu baris, dipisahkan dengan koma?



"Penipuan" di atas relevan dan berguna, terutama array_agg()fungsi khususnya.
Jay Taylor

Jawaban:


208

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

Membutuhkan PostgreSQL 9.0 tetapi itu tidak menjadi masalah.


Menemukan ini berguna sekarang. Terima kasih!
gooddadmike

47
Perhatikan bahwa bagi saya setidaknya, string_agg tidak suka menggunakan int untuk argumen pertamanya jadi saya melakukan sesuatu seperti: string_agg(CAST(id as varchar), ',')sebagai gantinya.
JZC

17
@JZC, atau bahkan lebih mudah:string_agg(id::text, ',')
Alphaaa

6
Jika Anda ingin mengurutkan kolomselect string_agg(id, ', ' order by id desc) from table
MA Hossain Tonu

1
Saya menemukan duplikat dengan pertanyaan saya tetapi menyelesaikannya denganSTRING_AGG(DISTINCT customer_name, ',')
ChristoKiwi

51

Anda bisa menggunakan fungsi array () dan array_to_string () bersama dengan kueri Anda. DenganSELECT array( SELECT id FROM table ); Anda akan mendapatkan hasil seperti: {1,2,3,4,5,6}

Kemudian, jika Anda ingin menghapus tanda {}, Anda bisa menggunakan fungsi array_to_string () dan menggunakan koma sebagai pemisah, jadi: SELECT array_to_string( array( SELECT id FROM table ), ',' )akan mendapatkan hasil seperti: 1,2,3,4,5,6


1
SELECT array_to_string( id, ',' ) AS id FROM table
Alex R.


0

gunakan fungsi array_to_string () & array () untuk hal yang sama.

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

Bagaimana ini lebih baik daripada menggunakan string_agg()?
a_horse_with_no_name

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

{1,2,3,4}

Saya menggunakan Postgres 11 dan EntityFramework mengambilnya sebagai array integer.

Dengan menggunakan situs kami, Anda mengakui telah membaca dan memahami Kebijakan Cookie dan Kebijakan Privasi kami.
Licensed under cc by-sa 3.0 with attribution required.