I Postgres kan vi använda STRING_AGG()
funktion för att omvandla våra frågeresultat till en kommaseparerad lista.
Istället för att varje värde matas ut i en separat rad (som med alla vanliga frågor), matas värdena ut till en enda rad, separerade med kommatecken (eller någon annan avgränsare som vi väljer).
Exempel
Föreställ dig att vi kör följande fråga:
SELECT *
FROM Genres;
Resultat:
+---------+---------+ | genreid | genre | +---------+---------+ | 1 | Rock | | 2 | Jazz | | 3 | Country | | 4 | Pop | | 5 | Blues | | 6 | Hip Hop | | 7 | Rap | | 8 | Punk | +---------+---------+ (8 rows)
Vi kan köra följande fråga för att mata ut genre
kolumn som en kommaseparerad lista:
SELECT STRING_AGG(genre, ', ')
FROM Genres;
Resultat:
+-----------------------------------------------------+ | string_agg | +-----------------------------------------------------+ | Rock, Jazz, Country, Pop, Blues, Hip Hop, Rap, Punk | +-----------------------------------------------------+ (1 row)
Vi kan till och med inkludera GenreId
kolumn i vår lista om vi vill:
SELECT STRING_AGG(CONCAT(GenreId, ') ', Genre), ' ' ORDER BY GenreId ASC)
FROM Genres;
Resultat:
1) Rock 2) Jazz 3) Country 4) Pop 5) Blues 6) Hip Hop 7) Rap 8) Punk
Här använde jag även ORDER BY
sats i STRING_AGG()
funktion för att sortera resultaten efter GenreId
i stigande ordning.
Vi kan också göra saker som att ta bort dubbletter (med DISTINCT
sats), använd en annan avgränsare och använd funktionen i en grupperad fråga.
Se STRING_AGG()
Funktion i PostgreSQL för exempel.