sql >> Database teknologi >  >> NoSQL >> MongoDB

Sådan får du flere rækker til en kommasepareret liste i SQL

De fleste af de store RDBMS'er har en funktion, der gør det muligt for os at returnere vores forespørgselsresultater som en kommasepareret liste.

Det vil sige, at vi kan bruge en sådan funktion til at konvertere hver række til et separat listeelement inden for en kommasepareret liste.

Nedenfor er eksempler på, hvordan man opnår dette i nogle af de mere populære RDBMS'er.

MySQL

MySQL har GROUP_CONCAT() funktion, der giver os mulighed for at udlæse vores forespørgsel i en kommasepareret liste:

SELECT GROUP_CONCAT(PetName) 
FROM Pets;

Resultat:

Fluffy,Fetch,Scratch,Wag,Tweet,Fluffy,Bark,Meow

Vi kan også gøre ting som at fjerne duplikerede værdier (med DISTINCT klausul), specificer en rækkefølge for resultaterne (med ORDER BY klausul), og angiv en anden afgrænsning.

Se GROUP_CONCAT() Funktion i MySQL for flere eksempler.

Oracle-database

Oracle Database har LISTAGG() funktion:

SELECT LISTAGG(last_name, ', ')
FROM employees
WHERE job_id = 'IT_PROG';

Resultat:

Hunold, Ernst, Austin, Pataballa, Lorentz    

Ligesom MySQL giver Oracle Database os også mulighed for at fjerne duplikerede værdier, angive en rækkefølge for resultaterne, angive en anden separator osv.

Se LISTAGG() Funktion i Oracle for flere eksempler.

SQL-server

SQL Server har STRING_AGG() funktion for at returnere vores resultater i en kommasepareret liste:

SELECT STRING_AGG(Genre, ',') AS Result FROM Genres

Resultat:

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

Vi kan også fjerne duplikerede værdier, angive en rækkefølge for resultaterne, ændre afgrænseren osv.

Se Sådan returneres forespørgselsresultater som en kommasepareret liste i SQL Server for flere eksempler.

MariaDB

Ligesom MySQL har MariaDB også en GROUP_CONCAT() funktion:

SELECT GROUP_CONCAT(PetName) 
FROM Pets;

Resultat:

Fluffy,Fetch,Scratch,Wag,Tweet,Fluffy,Bark,Meow

Ligesom MySQL's funktion af samme navn, kan vi også gøre ting som at fjerne duplikerede værdier (med DISTINCT klausul), specificer en rækkefølge for resultaterne (med ORDER BY klausul), ændre separatoren osv.

En ting, som MariaDB har over MySQL, er LIMIT klausul, som giver os mulighed for at begrænse antallet af resultater på listen.

Se MariaDB GROUP_CONCAT() for flere eksempler.

PostgreSQL

Postgres har STRING_AGG() funktion:

SELECT STRING_AGG(PetName, ',') 
FROM Pets;

Resultat:

Fluffy,Fetch,Scratch,Wag,Tweet,Fluffy,Bark,Meow

Vi kan også fjerne duplikerede værdier (med DISTINCT). klausul), specificer en rækkefølge for resultaterne (med ORDER BY klausul), ændre separatoren osv.

Se STRING_AGG() Funktion i PostgreSQL for flere eksempler.

SQLite

I SQLite kan vi bruge GROUP_CONCAT() funktion til at transformere vores forespørgselsresultater til en kommasepareret liste:

SELECT group_concat(FirstName)
FROM Employee;

Resultat:

Andrew,Nancy,Jane,Margaret,Steve,Michael,Robert,Laura

Se hvordan GROUP_CONCAT() Virker i SQLite for flere eksempler.

Flere kolonner

Ovenstående eksempler bruger alle en enkelt kolonne til listen. Vi kan også sammenkæde flere kolonner for at producere en liste, der inkluderer flere kolonner.

Antag, at vi har en tabel med følgende data:

SELECT TaskId, TaskName 
FROM Tasks;

Resultat:

TaskId  TaskName    
------  ------------
1       Feed cats   
2       Water dog   
3       Feed garden 
4       Paint carpet
5       Clean roof  
6       Feed cats   

I SQL Server kan vi gøre følgende for at udskrive begge kolonner i en enkelt række:

SELECT STRING_AGG(CONCAT(TaskId, ') ', TaskName), ' ') 
FROM Tasks

Resultat:

1) Feed cats 2) Water dog 3) Feed garden 4) Paint carpet 5) Clean roof 6) Feed cats

  1. MongoDB pull array-element fra en samling

  2. Stackexchange.Redis hvorfor etablerer ConnectionMultiplexer.Connect to klientforbindelser?

  3. En oversigt over feltniveaukryptering på klientsiden i MongoDB

  4. MongoDb c# driver find element i array efter feltværdi