V MariaDB můžeme použít GROUP_CONCAT()
funkci vrátit výsledky dotazu jako seznam oddělený čárkami. Tím myslím, že pro daný sloupec můžeme převést všechny řádky do jednoho řádku, který obsahuje čárkami oddělený seznam hodnot, které daný sloupec tvoří. Každý řádek je samostatnou položkou v seznamu.
Příklad
Předpokládejme, že spustíme následující dotaz:
SELECT meal
FROM guest_meals;
Výsledek:
+---------+ | meal | +---------+ | Salad | | Fish | | Burrito | | Pasta | | Salad | | Salad | +---------+ 6 rows in set (0.001 sec)
Výsledkem tohoto dotazu bylo šest řádků.
Tyto řádky můžeme převést na jeden řádek oddělený čárkami takto:
SELECT GROUP_CONCAT(meal)
FROM guest_meals;
Výsledek:
+--------------------------------------+ | GROUP_CONCAT(meal) | +--------------------------------------+ | Salad,Fish,Burrito,Pasta,Salad,Salad | +--------------------------------------+ 1 row in set (0.003 sec)
Změňte oddělovač
Můžeme určit svůj vlastní oddělovač tak, že jej předáme funkci s předponou SEPARATOR
klíčové slovo:
SELECT GROUP_CONCAT(meal SEPARATOR ' + ')
FROM guest_meals;
Výsledek:
Salad + Fish + Burrito + Pasta + Salad + Salad
Pořadí výsledků
Výsledky můžeme seřadit pomocí ORDER BY
klauzule ve funkci:
SELECT GROUP_CONCAT(meal ORDER BY meal ASC)
FROM guest_meals;
Výsledek:
Burrito,Fish,Pasta,Salad,Salad,Salad
Vracet pouze jedinečné hodnoty
Můžeme použít DISTINCT
klauzule pro vrácení pouze jedinečných hodnot:
SELECT GROUP_CONCAT(DISTINCT meal ORDER BY meal ASC)
FROM guest_meals;
Výsledek:
Burrito,Fish,Pasta,Salad
Omezit výsledky
Můžeme použít LIMIT
klauzule pro omezení počtu položek v seznamu:
SELECT GROUP_CONCAT(DISTINCT meal ORDER BY meal ASC LIMIT 3)
FROM guest_meals;
Výsledek:
Burrito,Fish,Pasta
Skupinové dotazy
GROUP_CONCAT()
funkce může být užitečná při spouštění seskupených dotazů. Viz MariaDB GROUP_CONCAT()
pro příklad.