sql >> Database >  >> NoSQL >> MongoDB

Meerdere rijen in een door komma's gescheiden lijst in SQL krijgen

De meeste van de belangrijkste RDBMS'en hebben een functie waarmee we onze zoekopdrachtresultaten kunnen retourneren als een door komma's gescheiden lijst.

Dat wil zeggen, we kunnen een dergelijke functie gebruiken om elke rij om te zetten in een afzonderlijk lijstitem, binnen een door komma's gescheiden lijst.

Hieronder staan ​​voorbeelden van hoe u dit kunt bereiken in enkele van de meer populaire RDBMS'en.

MySQL

MySQL heeft de GROUP_CONCAT() functie waarmee we onze zoekopdrachtresultaten in een door komma's gescheiden lijst kunnen weergeven:

SELECT GROUP_CONCAT(PetName) 
FROM Pets;

Resultaat:

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

We kunnen ook dingen doen zoals dubbele waarden verwijderen (met de DISTINCT clausule), specificeer een volgorde voor de resultaten (met de ORDER BY clausule), en geef een ander scheidingsteken op.

Zie GROUP_CONCAT() Functie in MySQL voor meer voorbeelden.

Oracle-database

Oracle Database heeft de LISTAGG() functie:

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

Resultaat:

Hunold, Ernst, Austin, Pataballa, Lorentz    

Net als MySQL stelt Oracle Database ons ook in staat dubbele waarden te verwijderen, een volgorde voor de resultaten op te geven, een ander scheidingsteken op te geven, enz.

Zie LISTAGG() Functie in Oracle voor meer voorbeelden.

SQL-server

SQL Server heeft de STRING_AGG() functie om onze resultaten terug te geven in een door komma's gescheiden lijst:

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

Resultaat:

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

We kunnen ook dubbele waarden verwijderen, een volgorde voor de resultaten specificeren, het scheidingsteken wijzigen, enz.

Zie Queryresultaten retourneren als een door komma's gescheiden lijst in SQL Server voor meer voorbeelden.

MariaDB

Net als MySQL heeft MariaDB ook een GROUP_CONCAT() functie:

SELECT GROUP_CONCAT(PetName) 
FROM Pets;

Resultaat:

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

Net als de gelijknamige functie van MySQL, kunnen we ook dingen doen als dubbele waarden verwijderen (met de DISTINCT clausule), specificeer een volgorde voor de resultaten (met de ORDER BY clausule), wijzig het scheidingsteken, enz.

Een ding dat MariaDB echter boven MySQL heeft, is de LIMIT clausule, die ons de mogelijkheid geeft om het aantal resultaten in de lijst te beperken.

Zie MariaDB GROUP_CONCAT() voor meer voorbeelden.

PostgreSQL

Postgres heeft de STRING_AGG() functie:

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

Resultaat:

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

We kunnen ook dubbele waarden verwijderen (met de DISTINCT clausule), specificeer een volgorde voor de resultaten (met de ORDER BY clausule), verander het scheidingsteken, enz.

Zie STRING_AGG() Functie in PostgreSQL voor meer voorbeelden.

SQLite

In SQLite kunnen we de GROUP_CONCAT() . gebruiken functie om onze zoekopdrachtresultaten om te zetten in een door komma's gescheiden lijst:

SELECT group_concat(FirstName)
FROM Employee;

Resultaat:

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

Zie hoe GROUP_CONCAT() Werkt in SQLite voor meer voorbeelden.

Meerdere kolommen

De bovenstaande voorbeelden gebruiken allemaal een enkele kolom voor de lijst. We kunnen ook meerdere kolommen samenvoegen om een ​​lijst te maken die meerdere kolommen bevat.

Stel dat we een tabel hebben met de volgende gegevens:

SELECT TaskId, TaskName 
FROM Tasks;

Resultaat:

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

In SQL Server kunnen we het volgende doen om beide kolommen in een enkele rij uit te voeren:

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

Resultaat:

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

  1. Is dit een goede use-case voor Redis op een ServiceStack REST API?

  2. MongoDB - Update een object in geneste Array

  3. Hoe de _id van een MongoDB-document bijwerken?

  4. Suggesties voor een eenvoudige .NET gedistribueerde caching-oplossing