MariaDB
 sql >> Base de données >  >> RDS >> MariaDB

Convertir les résultats de la requête en une liste séparée par des virgules dans MariaDB

Dans MariaDB, nous pouvons utiliser le GROUP_CONCAT() fonction pour renvoyer nos résultats de requête sous forme de liste séparée par des virgules. J'entends par là, pour une colonne donnée, nous pouvons convertir toutes les lignes en une seule ligne contenant une liste séparée par des virgules des valeurs qui composent cette colonne. Chaque ligne est un élément distinct dans la liste.

Exemple

Supposons que nous lancions la requête suivante :

SELECT meal 
FROM guest_meals;

Résultat :

+---------+
| meal    |
+---------+
| Salad   |
| Fish    |
| Burrito |
| Pasta   |
| Salad   |
| Salad   |
+---------+
6 rows in set (0.001 sec)

Cette requête a généré six lignes.

Nous pouvons convertir ces lignes en une ligne séparée par des virgules comme ceci :

SELECT GROUP_CONCAT(meal) 
FROM guest_meals;

Résultat :

+--------------------------------------+
| GROUP_CONCAT(meal)                   |
+--------------------------------------+
| Salad,Fish,Burrito,Pasta,Salad,Salad |
+--------------------------------------+
1 row in set (0.003 sec)

Modifier le délimiteur

Nous pouvons spécifier notre propre séparateur en le passant à la fonction, préfixé par le SEPARATOR mot-clé :

SELECT GROUP_CONCAT(meal SEPARATOR ' + ') 
FROM guest_meals;

Résultat :

Salad + Fish + Burrito + Pasta + Salad + Salad

Ordre des résultats

Nous pouvons ordonner les résultats en utilisant un ORDER BY clause dans la fonction :

SELECT GROUP_CONCAT(meal ORDER BY meal ASC) 
FROM guest_meals;

Résultat :

Burrito,Fish,Pasta,Salad,Salad,Salad

Renvoyer uniquement les valeurs uniques

Nous pouvons utiliser un DISTINCT clause pour ne renvoyer que des valeurs uniques :

SELECT GROUP_CONCAT(DISTINCT meal ORDER BY meal ASC) 
FROM guest_meals;

Résultat :

Burrito,Fish,Pasta,Salad

Limiter les résultats

Nous pouvons utiliser un LIMIT clause pour limiter le nombre d'éléments dans la liste :

SELECT GROUP_CONCAT(DISTINCT meal ORDER BY meal ASC LIMIT 3) 
FROM guest_meals;

Résultat :

Burrito,Fish,Pasta

Requêtes groupées

Le GROUP_CONCAT() La fonction peut être pratique lors de l'exécution de requêtes groupées. Voir MariaDB GROUP_CONCAT() pour un exemple.