sql >> Database >  >> RDS >> PostgreSQL

PostgreSQL GROUP_CONCAT() Equivalent

Sommige RDBMS'en zoals MySQL en MariaDB hebben een GROUP_CONCAT() functie waarmee u een querykolom kunt retourneren als een gescheiden lijst (bijvoorbeeld een door komma's gescheiden lijst).

PostgreSQL heeft een vergelijkbare functie genaamd STRING_AGG() . Deze functie werkt op vrijwel dezelfde manier als GROUP_CONCAT() werkt in MySQL en MariaDB.

Voorbeeld

Hier is een eenvoudig voorbeeld om te demonstreren hoe STRING_AGG() van PostgreSQL functie werkt:

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

Resultaat:

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

Dit is wat er gebeurt als we de query gewoon uitvoeren zonder de STRING_AGG() functie:

SELECT genre FROM Genres;

Resultaat:

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

We krijgen acht rijen, elk met een afzonderlijke waarde, in plaats van één lange door komma's gescheiden rij met alle waarden.

Als er iets is, PostgreSQL's STRING_AGG() lijkt meer op MySQL's GROUP_CONCAT() dan de gelijknamige functie van MariaDB. Ik zeg dit omdat MariaDB's GROUP_CONCAT() stelt ons in staat om een ​​LIMIT clausule (vanaf MariaDB 10.3.3), rechtstreeks vanuit de functie zelf. MySQL GROUP_CONCAT() ondersteunt de LIMIT . niet clausule, en de STRING_AGG() . van PostgreSQL ook niet functie (tenminste, niet op het moment van schrijven).

Een ander verschil is dat STRING_AGG() . van PostgreSQL vereist een tweede argument (dat het scheidingsteken specificeert dat moet worden gebruikt). Zowel MySQL als MariaDB maken dit optioneel met hun GROUP_CONCAT() functies.

STRING_AGG() . van Postgres accepteert een ORDER BY clausule, en een DISTINCT clausule (net als MariaDB en MySQL's GROUP_CONCAT() functies).

Zie STRING_AGG() Functie in PostgreSQL voor meer voorbeelden.

En mocht je geïnteresseerd zijn, SQL Server heeft ook een STRING_AGG() functie die op vrijwel dezelfde manier werkt.


  1. Snapshots van SQL Server-database -3

  2. Excel-blad converteren naar database van sqlite in Android

  3. 4 manieren om de taakgeschiedenis van SQL Server op te halen

  4. JSON_EXTRACT() – Gegevens retourneren uit een JSON-document in MySQL