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

PostgreSQL GROUP_CONCAT() Odpowiednik

Niektóre RDBMS, takie jak MySQL i MariaDB, mają funkcję GROUP_CONCAT() funkcja, która pozwala zwrócić kolumnę zapytania jako listę rozdzielaną (na przykład listę rozdzielaną przecinkami).

PostgreSQL ma podobną funkcję o nazwie STRING_AGG() . Ta funkcja działa w podobny sposób jak GROUP_CONCAT() działa w MySQL i MariaDB.

Przykład

Oto podstawowy przykład pokazujący, jak STRING_AGG() w PostgreSQL funkcja działa:

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

Wynik:

Rock,Jazz,Country,Pop,Blues,Hip Hop,Rap,Punk

Oto, co się dzieje, gdy wykonujemy zapytanie bez STRING_AGG() funkcja:

SELECT genre FROM Genres;

Wynik:

+---------+
|  genre  |
+---------+
| Rock    |
| Jazz    |
| Country |
| Pop     |
| Blues   |
| Hip Hop |
| Rap     |
| Punk    |
+---------+
(8 rows)

Otrzymujemy osiem wierszy, każdy z osobną wartością, zamiast jednego wiersza oddzielonego przecinkami wszystkich wartości.

Jeśli już, to STRING_AGG() w PostgreSQL bardziej przypomina GROUP_CONCAT() w MySQL niż funkcja MariaDB o tej samej nazwie. Mówię to, ponieważ GROUP_CONCAT() MariaDB pozwala nam zapewnić LIMIT (od MariaDB 10.3.3), bezpośrednio z samej funkcji. MySQL GROUP_CONCAT() nie obsługuje LIMIT klauzula, podobnie jak STRING_AGG() w PostgreSQL funkcja (przynajmniej nie w chwili pisania tego tekstu).

Kolejną różnicą jest to, że STRING_AGG() w PostgreSQL wymaga drugiego argumentu (który określa separator do użycia). Zarówno MySQL, jak i MariaDB czynią to opcjonalnym za pomocą ich GROUP_CONCAT() funkcje.

STRING_AGG() Postgresa akceptuje ORDER BY klauzula i DISTINCT klauzula (podobnie jak w MariaDB i MySQL GROUP_CONCAT() funkcje).

Zobacz STRING_AGG() Funkcja w PostgreSQL, aby uzyskać więcej przykładów.

A jeśli jesteś zainteresowany, SQL Server ma również funkcję STRING_AGG() funkcja, która działa w bardzo podobny sposób.


  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Bardziej niezawodne zestawienia z obsługą ICU w PostgreSQL 10

  2. Funkcje okna:last_value(ORDER BY ... ASC) to samo co last_value(ORDER BY ... DESC)

  3. Przegląd buforowania zapytań PostgreSQL i równoważenia obciążenia

  4. Jak uzyskać czas tworzenia bazy danych w PostgreSQL 9.0?

  5. W ramach funkcji wyzwalacza, jak uzyskać, które pola są aktualizowane?