Size SELECT id from tablebirkaç sonuç döndüren bir sorgunuz olduğunu varsayalım (gerçek durum karmaşık bir sorgudur).
Sorun id, virgülle ayrılmış tek bir satırda tüm geri dönüşlerin nasıl elde edileceği ?
Size SELECT id from tablebirkaç sonuç döndüren bir sorgunuz olduğunu varsayalım (gerçek durum karmaşık bir sorgudur).
Sorun id, virgülle ayrılmış tek bir satırda tüm geri dönüşlerin nasıl elde edileceği ?
array_agg()işlevle alakalı ve yararlıydı .
Yanıtlar:
SELECT string_agg(id::text, ',') FROM table
PostgreSQL 9.0 gerektirir ama bu bir problem değildir.
string_agg(CAST(id as varchar), ',')bunun yerine.
string_agg(id::text, ',')
select string_agg(id, ', ' order by id desc) from table
STRING_AGG(DISTINCT customer_name, ',')
Sorgunuzla birlikte array () ve array_to_string () işlevlerini kullanabilirsiniz. İle SELECT array( SELECT id FROM table );şöyle bir sonuç alacaksınız: {1,2,3,4,5,6}
Ardından, {} işaretlerini kaldırmak isterseniz, sadece array_to_string () işlevini ve ayırıcı olarak virgül kullanabilirsiniz, böylece: SELECT array_to_string( array( SELECT id FROM table ), ',' )şöyle bir sonuç alır: 1,2,3,4,5,6
SELECT array_to_string( id, ',' ) AS id FROM table
Psql kullanarak herhangi bir SQL sorgusundan bir CSV oluşturabilirsiniz:
$ psql
> \o myfile.csv
> \f ','
> \a
> SELECT col1 AS column1, col2 AS column2 ... FROM ...
Sonuç olarak elde edilen myfile.csv dosyası, CSV sütun başlıkları olarak SQL sonuç kümesi sütun adlarına ve CSV satırları olarak sorgu dizilerine sahip olacaktır.
h / t http://pookey.co.uk/wordpress/archives/51-outputting-from-postgres-to-csv
bunun için array_to_string () & array () işlevini kullanın.
select array_to_string(array(select column_name from table_name where id=5), ', ');
string_agg()?
SELECT array_agg(id, ',') FROM table
{1,2,3,4}
Postgres 11 kullanıyorum ve EntityFramework onu tamsayı dizisi olarak getiriyor.