sql >> Database teknologi >  >> RDS >> PostgreSQL

Sådan returneres forespørgselsresultater som en kommasepareret liste i PostgreSQL

I Postgres kan vi bruge STRING_AGG() funktion til at omdanne vores forespørgselsresultater til en kommasepareret liste.

I stedet for at hver værdi udskrives i en separat række (som med enhver almindelig forespørgsel), udlæses værdierne til en enkelt række, adskilt af et komma (eller en anden afgrænsning efter vores valg).

Eksempel

Forestil dig, at vi kører følgende forespørgsel:

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øre følgende forespørgsel for at udlæse genre kolonne som en kommasepareret liste:

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

Resultat:

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

Vi kan endda inkludere GenreId kolonne på vores liste, hvis vi ønsker:

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

Her brugte jeg også ORDER BY klausul i STRING_AGG() funktion for at sortere resultaterne efter GenreId i stigende rækkefølge.

Vi kan også gøre ting som at fjerne dubletter (med DISTINCT klausul), brug en anden separator, og brug funktionen i en grupperet forespørgsel.

Se STRING_AGG() Funktion i PostgreSQL for eksempler.


  1. Sådan justerer du ydelsen af ​​SQL Server, Azure SQL Database og Amazon RDS

  2. Hvorfor kan jeg ikke indtaste denne dato i en tabel ved hjælp af sql?

  3. Logger du ALLE forespørgsler på en SQL Server 2008 Express-database?

  4. Oracle til PostgreSQL:ANSI ydre joinsyntaks i PostgreSQL