In MariaDB kunnen we de GROUP_CONCAT()
. gebruiken functie om onze queryresultaten te retourneren als een door komma's gescheiden lijst. Daarmee bedoel ik dat we voor een bepaalde kolom alle rijen kunnen converteren naar een enkele rij die een door komma's gescheiden lijst bevat van de waarden waaruit die kolom bestaat. Elke rij is een apart item in de lijst.
Voorbeeld
Stel dat we de volgende query uitvoeren:
SELECT meal
FROM guest_meals;
Resultaat:
+---------+ | meal | +---------+ | Salad | | Fish | | Burrito | | Pasta | | Salad | | Salad | +---------+ 6 rows in set (0.001 sec)
Die zoekopdracht resulteerde in zes rijen.
We kunnen die rijen als volgt omzetten in één door komma's gescheiden rij:
SELECT GROUP_CONCAT(meal)
FROM guest_meals;
Resultaat:
+--------------------------------------+ | GROUP_CONCAT(meal) | +--------------------------------------+ | Salad,Fish,Burrito,Pasta,Salad,Salad | +--------------------------------------+ 1 row in set (0.003 sec)
Wijzig het scheidingsteken
We kunnen ons eigen scheidingsteken specificeren door het door te geven aan de functie, voorafgegaan door de SEPARATOR
trefwoord:
SELECT GROUP_CONCAT(meal SEPARATOR ' + ')
FROM guest_meals;
Resultaat:
Salad + Fish + Burrito + Pasta + Salad + Salad
De resultaten bestellen
We kunnen de resultaten bestellen met behulp van een ORDER BY
clausule in de functie:
SELECT GROUP_CONCAT(meal ORDER BY meal ASC)
FROM guest_meals;
Resultaat:
Burrito,Fish,Pasta,Salad,Salad,Salad
Alleen unieke waarden retourneren
We kunnen een DISTINCT
. gebruiken clausule om alleen unieke waarden te retourneren:
SELECT GROUP_CONCAT(DISTINCT meal ORDER BY meal ASC)
FROM guest_meals;
Resultaat:
Burrito,Fish,Pasta,Salad
Beperk de resultaten
We kunnen een LIMIT
. gebruiken clausule om het aantal items in de lijst te beperken:
SELECT GROUP_CONCAT(DISTINCT meal ORDER BY meal ASC LIMIT 3)
FROM guest_meals;
Resultaat:
Burrito,Fish,Pasta
Gegroepeerde zoekopdrachten
De GROUP_CONCAT()
functie kan handig zijn bij het uitvoeren van gegroepeerde query's. Zie MariaDB GROUP_CONCAT()
voor een voorbeeld.