PostgreSQL
 sql >> Baza danych >  >> RDS >> PostgreSQL

Jak zwrócić wyniki zapytania jako listę oddzieloną przecinkami w PostgreSQL

W Postgresie możemy użyć STRING_AGG() funkcja przekształcania wyników zapytania w listę oddzieloną przecinkami.

Zamiast każdej wartości wyprowadzanej w osobnym wierszu (jak w przypadku każdego zwykłego zapytania), wartości są wyprowadzane w jednym wierszu, oddzielonym przecinkiem (lub innym wybranym przez nas ogranicznikiem).

Przykład

Wyobraź sobie, że uruchamiamy następujące zapytanie:

SELECT * 
FROM Genres;

Wynik:

+---------+---------+
| genreid |  genre  |
+---------+---------+
|       1 | Rock    |
|       2 | Jazz    |
|       3 | Country |
|       4 | Pop     |
|       5 | Blues   |
|       6 | Hip Hop |
|       7 | Rap     |
|       8 | Punk    |
+---------+---------+
(8 rows)

Możemy uruchomić następujące zapytanie, aby wyprowadzić genre kolumna jako lista oddzielona przecinkami:

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

Wynik:

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

Możemy nawet uwzględnić GenreId kolumna na naszej liście, jeśli chcemy:

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

Wynik:

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

Tutaj również użyłem ORDER BY klauzula w STRING_AGG() funkcja w celu posortowania wyników według GenreId w porządku rosnącym.

Możemy również robić takie rzeczy jak usuwanie duplikatów (za pomocą DISTINCT klauzuli), użyj innego separatora i użyj funkcji w zgrupowanym zapytaniu.

Zobacz STRING_AGG() Przykłady funkcji w PostgreSQL.


  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Generuj sql z podzapytanie jako kolumnę w instrukcji SELECT za pomocą SQLAlchemy

  2. Wybieranie wielu wartości max() za pomocą jednej instrukcji SQL

  3. Jak odblokować możliwe blokady rzędów w Postgresie?

  4. PostgreSQL:Utwórz indeks dla kolumny logicznej

  5. Wzorce i modyfikatory szablonów do formatowania daty/godziny w PostgreSQL