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:
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.