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?
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?
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.
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,6
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:
$ psql
> \o myfile.csv
> \f ','
> \a
> SELECT col1 AS column1, col2 AS column2 ... FROM ...
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
utilisez la fonction array_to_string () & array () pour la même chose.
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}
J'utilise Postgres 11 et EntityFramework le récupère sous forme de tableau d'entiers.