I MariaDB kan vi bruge GROUP_CONCAT()
funktion for at returnere vores forespørgselsresultater som en kommasepareret liste. Med det mener jeg, for en given kolonne kan vi konvertere alle rækker til en enkelt række, der indeholder en kommasepareret liste over de værdier, der udgjorde den kolonne. Hver række er et separat element på listen.
Eksempel
Antag, at vi kører følgende forespørgsel:
SELECT meal
FROM guest_meals;
Resultat:
+---------+ | meal | +---------+ | Salad | | Fish | | Burrito | | Pasta | | Salad | | Salad | +---------+ 6 rows in set (0.001 sec)
Den forespørgsel resulterede i seks rækker.
Vi kan konvertere disse rækker til en kommasepareret række på denne måde:
SELECT GROUP_CONCAT(meal)
FROM guest_meals;
Resultat:
+--------------------------------------+ | GROUP_CONCAT(meal) | +--------------------------------------+ | Salad,Fish,Burrito,Pasta,Salad,Salad | +--------------------------------------+ 1 row in set (0.003 sec)
Skift afgrænseren
Vi kan specificere vores egen separator ved at overføre den til funktionen med præfikset SEPARATOR
søgeord:
SELECT GROUP_CONCAT(meal SEPARATOR ' + ')
FROM guest_meals;
Resultat:
Salad + Fish + Burrito + Pasta + Salad + Salad
Bestilling af resultaterne
Vi kan bestille resultaterne ved at bruge en ORDER BY
klausul i funktionen:
SELECT GROUP_CONCAT(meal ORDER BY meal ASC)
FROM guest_meals;
Resultat:
Burrito,Fish,Pasta,Salad,Salad,Salad
Returnering kun unikke værdier
Vi kan bruge en DISTINCT
klausul for kun at returnere unikke værdier:
SELECT GROUP_CONCAT(DISTINCT meal ORDER BY meal ASC)
FROM guest_meals;
Resultat:
Burrito,Fish,Pasta,Salad
Begræns resultaterne
Vi kan bruge en LIMIT
klausul for at begrænse antallet af elementer på listen:
SELECT GROUP_CONCAT(DISTINCT meal ORDER BY meal ASC LIMIT 3)
FROM guest_meals;
Resultat:
Burrito,Fish,Pasta
Grupperte forespørgsler
GROUP_CONCAT()
funktion kan være praktisk, når du kører grupperede forespørgsler. Se MariaDB GROUP_CONCAT()
for et eksempel.