W MariaDB możemy użyć GROUP_CONCAT()
funkcja zwracająca wyniki zapytania w postaci listy oddzielonej przecinkami. Mam na myśli to, że dla danej kolumny możemy skonwertować wszystkie wiersze do jednego wiersza, który zawiera oddzieloną przecinkami listę wartości składających się na tę kolumnę. Każdy wiersz jest osobną pozycją na liście.
Przykład
Załóżmy, że uruchamiamy następujące zapytanie:
SELECT meal
FROM guest_meals;
Wynik:
+---------+ | meal | +---------+ | Salad | | Fish | | Burrito | | Pasta | | Salad | | Salad | +---------+ 6 rows in set (0.001 sec)
To zapytanie dało sześć wierszy.
Możemy przekształcić te wiersze w jeden wiersz oddzielony przecinkami w ten sposób:
SELECT GROUP_CONCAT(meal)
FROM guest_meals;
Wynik:
+--------------------------------------+ | GROUP_CONCAT(meal) | +--------------------------------------+ | Salad,Fish,Burrito,Pasta,Salad,Salad | +--------------------------------------+ 1 row in set (0.003 sec)
Zmień ogranicznik
Możemy określić własny separator, przekazując go do funkcji poprzedzonej przedrostkiem SEPARATOR
słowo kluczowe:
SELECT GROUP_CONCAT(meal SEPARATOR ' + ')
FROM guest_meals;
Wynik:
Salad + Fish + Burrito + Pasta + Salad + Salad
Porządkowanie wyników
Wyniki możemy uporządkować za pomocą ORDER BY
klauzula w funkcji:
SELECT GROUP_CONCAT(meal ORDER BY meal ASC)
FROM guest_meals;
Wynik:
Burrito,Fish,Pasta,Salad,Salad,Salad
Zwróć tylko unikalne wartości
Możemy użyć DISTINCT
klauzula zwracająca tylko unikalne wartości:
SELECT GROUP_CONCAT(DISTINCT meal ORDER BY meal ASC)
FROM guest_meals;
Wynik:
Burrito,Fish,Pasta,Salad
Ogranicz wyniki
Możemy użyć LIMIT
klauzula ograniczająca liczbę pozycji na liście:
SELECT GROUP_CONCAT(DISTINCT meal ORDER BY meal ASC LIMIT 3)
FROM guest_meals;
Wynik:
Burrito,Fish,Pasta
Zgrupowane zapytania
GROUP_CONCAT()
funkcja może być przydatna podczas uruchamiania zgrupowanych zapytań. Zobacz MariaDB GROUP_CONCAT()
na przykład.