sql >> Databasteknik >  >> RDS >> PostgreSQL

PostgreSQL GROUP_CONCAT() Ekvivalent

Vissa RDBMS som MySQL och MariaDB har en GROUP_CONCAT() funktion som låter dig returnera en frågekolumn som en avgränsad lista (till exempel en kommaseparerad lista).

PostgreSQL har en liknande funktion som heter STRING_AGG() . Den här funktionen fungerar på ungefär samma sätt som GROUP_CONCAT() fungerar i MySQL och MariaDB.

Exempel

Här är ett grundläggande exempel för att visa hur PostgreSQL:s STRING_AGG() funktionen fungerar:

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

Resultat:

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

Här är vad som händer när vi bara gör frågan utan STRING_AGG() funktion:

SELECT genre FROM Genres;

Resultat:

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

Vi får åtta rader, var och en med ett separat värde, istället för en lång kommaseparerad rad med alla värden.

Om något, PostgreSQL:s STRING_AGG() är mer som MySQL:s GROUP_CONCAT() än MariaDB:s funktion med samma namn. Jag säger detta eftersom MariaDB:s GROUP_CONCAT() tillåter oss att tillhandahålla en LIMIT klausul (från MariaDB 10.3.3), direkt från själva funktionen. MySQL GROUP_CONCAT() stöder inte LIMIT sats, och inte heller PostgreSQL:s STRING_AGG() funktion (åtminstone inte när detta skrivs).

En annan skillnad är att PostgreSQL:s STRING_AGG() kräver ett andra argument (som anger vilken avgränsare som ska användas). Både MySQL och MariaDB gör detta valfritt med deras GROUP_CONCAT() funktioner.

Postgress STRING_AGG() accepterar en ORDER BY sats och en DISTINCT klausul (liksom MariaDB och MySQL:s GROUP_CONCAT() funktioner).

Se STRING_AGG() Funktion i PostgreSQL för fler exempel.

Och om du är intresserad har SQL Server också en STRING_AGG() funktion som fungerar på ungefär samma sätt.


  1. Felsökning AlwaysOn – Ibland krävs många uppsättningar ögon

  2. Låt inte Streams Pool lura dig

  3. Hur fixar man felaktiga strängvärdesfel?

  4. Vilka är begränsningarna för SQL Server Compact? (Eller - hur väljer man en databas att använda på MS-plattformar?)