Supposons que vous ayez une SELECT id from table
requête (le cas réel est une requête complexe) qui vous renvoie plusieurs résultats.
Le problème est de savoir comment obtenir tous les id
retours sur une seule ligne, séparés par des virgules?
sql
postgresql
Sorin
la source
la source
array_agg()
fonction en particulier.Réponses:
SELECT string_agg(id::text, ',') FROM table
Nécessite PostgreSQL 9.0 mais ce n'est pas un problème.
la source
string_agg(CAST(id as varchar), ',')
place.string_agg(id::text, ',')
select string_agg(id, ', ' order by id desc) from table
STRING_AGG(DISTINCT customer_name, ',')
Vous pouvez utiliser les fonctions array () et array_to_string () avec votre requête. Avec
SELECT array( SELECT id FROM table );
vous obtiendrez un résultat comme: {1,2,3,4,5,6}Ensuite, si vous souhaitez supprimer les signes {}, vous pouvez simplement utiliser la fonction array_to_string () et utiliser la virgule comme séparateur, donc:
SELECT array_to_string( array( SELECT id FROM table ), ',' )
obtiendra un résultat comme: 1,2,3,4,5,6la source
SELECT array_to_string( id, ',' ) AS id FROM table
Vous pouvez générer un CSV à partir de n'importe quelle requête SQL à l'aide de psql:
Le fichier myfile.csv résultant aura les noms de colonne de l'ensemble de résultats SQL comme en-têtes de colonne CSV et les tuples de requête comme lignes CSV.
h / t http://pookey.co.uk/wordpress/archives/51-outputting-from-postgres-to-csv
la source
utilisez la fonction array_to_string () & array () pour la même chose.
la source
string_agg()
?J'utilise Postgres 11 et EntityFramework le récupère sous forme de tableau d'entiers.
la source