I MariaDB kan vi använda GROUP_CONCAT()
funktion för att returnera våra frågeresultat som en kommaseparerad lista. Med det menar jag, för en given kolumn kan vi konvertera alla rader till en enda rad som innehåller en kommaseparerad lista över värdena som utgör den kolumnen. Varje rad är ett separat objekt i listan.
Exempel
Anta att vi kör följande fråga:
SELECT meal
FROM guest_meals;
Resultat:
+---------+ | meal | +---------+ | Salad | | Fish | | Burrito | | Pasta | | Salad | | Salad | +---------+ 6 rows in set (0.001 sec)
Den frågan resulterade i sex rader.
Vi kan konvertera dessa rader till en kommaseparerad rad så här:
SELECT GROUP_CONCAT(meal)
FROM guest_meals;
Resultat:
+--------------------------------------+ | GROUP_CONCAT(meal) | +--------------------------------------+ | Salad,Fish,Burrito,Pasta,Salad,Salad | +--------------------------------------+ 1 row in set (0.003 sec)
Ändra avgränsaren
Vi kan specificera vår egen separator genom att skicka den till funktionen, med prefixet SEPARATOR
nyckelord:
SELECT GROUP_CONCAT(meal SEPARATOR ' + ')
FROM guest_meals;
Resultat:
Salad + Fish + Burrito + Pasta + Salad + Salad
Beställa resultaten
Vi kan beställa resultaten genom att använda en ORDER BY
sats i funktionen:
SELECT GROUP_CONCAT(meal ORDER BY meal ASC)
FROM guest_meals;
Resultat:
Burrito,Fish,Pasta,Salad,Salad,Salad
Returnera endast unika värden
Vi kan använda en DISTINCT
sats för att endast returnera unika värden:
SELECT GROUP_CONCAT(DISTINCT meal ORDER BY meal ASC)
FROM guest_meals;
Resultat:
Burrito,Fish,Pasta,Salad
Begränsa resultaten
Vi kan använda en LIMIT
klausul för att begränsa antalet objekt i listan:
SELECT GROUP_CONCAT(DISTINCT meal ORDER BY meal ASC LIMIT 3)
FROM guest_meals;
Resultat:
Burrito,Fish,Pasta
Grupperade frågor
GROUP_CONCAT()
funktionen kan vara praktisk när du kör grupperade frågor. Se MariaDB GROUP_CONCAT()
till exempel.