In MariaDB, possiamo usare il GROUP_CONCAT()
funzione per restituire i risultati della query come un elenco separato da virgole. Con ciò intendo dire, per una determinata colonna, possiamo convertire tutte le righe in un'unica riga che contiene un elenco separato da virgole dei valori che compongono quella colonna. Ogni riga è un elemento separato nell'elenco.
Esempio
Supponiamo di eseguire la seguente query:
SELECT meal
FROM guest_meals;
Risultato:
+---------+ | meal | +---------+ | Salad | | Fish | | Burrito | | Pasta | | Salad | | Salad | +---------+ 6 rows in set (0.001 sec)
Quella query ha prodotto sei righe.
Possiamo convertire quelle righe in una riga separata da virgole in questo modo:
SELECT GROUP_CONCAT(meal)
FROM guest_meals;
Risultato:
+--------------------------------------+ | GROUP_CONCAT(meal) | +--------------------------------------+ | Salad,Fish,Burrito,Pasta,Salad,Salad | +--------------------------------------+ 1 row in set (0.003 sec)
Cambia il delimitatore
Possiamo specificare il nostro separatore passandolo alla funzione, preceduta da SEPARATOR
parola chiave:
SELECT GROUP_CONCAT(meal SEPARATOR ' + ')
FROM guest_meals;
Risultato:
Salad + Fish + Burrito + Pasta + Salad + Salad
Ordinare i risultati
Possiamo ordinare i risultati utilizzando un ORDER BY
clausola nella funzione:
SELECT GROUP_CONCAT(meal ORDER BY meal ASC)
FROM guest_meals;
Risultato:
Burrito,Fish,Pasta,Salad,Salad,Salad
Restituisci solo valori univoci
Possiamo usare un DISTINCT
clausola per restituire solo valori univoci:
SELECT GROUP_CONCAT(DISTINCT meal ORDER BY meal ASC)
FROM guest_meals;
Risultato:
Burrito,Fish,Pasta,Salad
Limita i risultati
Possiamo usare un LIMIT
clausola per limitare il numero di elementi nell'elenco:
SELECT GROUP_CONCAT(DISTINCT meal ORDER BY meal ASC LIMIT 3)
FROM guest_meals;
Risultato:
Burrito,Fish,Pasta
Query raggruppate
Il GROUP_CONCAT()
La funzione può essere utile quando si eseguono query raggruppate. Vedi MariaDB GROUP_CONCAT()
per un esempio.