PostgreSQL
 sql >> Datenbank >  >> RDS >> PostgreSQL

So geben Sie Abfrageergebnisse als kommagetrennte Liste in PostgreSQL zurück

In Postgres können wir den STRING_AGG() verwenden Funktion, um unsere Abfrageergebnisse in eine durch Kommas getrennte Liste umzuwandeln.

Anstatt dass jeder Wert in einer separaten Zeile ausgegeben wird (wie bei jeder normalen Abfrage), werden die Werte in einer einzelnen Zeile ausgegeben, getrennt durch ein Komma (oder ein anderes Trennzeichen unserer Wahl).

Beispiel

Stellen Sie sich vor, wir führen die folgende Abfrage aus:

SELECT * 
FROM Genres; 

Ergebnis:

+---------+---------+| Genreid | Genre |+---------+---------+| 1 | Felsen || 2 | Jazz || 3 | Land || 4 | Pop || 5 | Blues || 6 | Hip-Hop || 7 | Rap || 8 | Punk |+---------+---------+(8 Reihen)

Wir können die folgende Abfrage ausführen, um das genre auszugeben Spalte als kommaseparierte Liste:

SELECT STRING_AGG(genre, ', ')
FROM Genres; 

Ergebnis:

+---------------------------------------------- -------+| string_agg |+------------------------------------------------------------ ------+| Rock, Jazz, Country, Pop, Blues, Hip Hop, Rap, Punk |+------------------------------- ---------------------+(1 Zeile)

Wir können sogar die GenreId einschließen Spalte in unserer Liste, wenn wir wollen:

SELECT STRING_AGG(CONCAT(GenreId, ') ', Genre), ' ' ORDER BY GenreId ASC) 
FROM Genres; 

Ergebnis:

1) Rock 2) Jazz 3) Country 4) Pop 5) Blues 6) Hip Hop 7) Rap 8) Punk

Auch hier habe ich den ORDER BY verwendet -Klausel innerhalb von STRING_AGG() Funktion, um die Ergebnisse nach GenreId zu sortieren in aufsteigender Reihenfolge.

Wir können auch Dinge tun wie Duplikate entfernen (mit dem DISTINCT -Klausel), verwenden Sie ein anderes Trennzeichen und verwenden Sie die Funktion innerhalb einer gruppierten Abfrage.

Siehe STRING_AGG() Funktion in PostgreSQL für Beispiele.