Comment concaténer plusieurs lignes dans un seul champ dans MySQL?

En utilisant MySQL, je peux faire quelque chose comme ceci :

SELECT color FROM colors_table WHERE color_id = 4;

La sortie :

blue
red
green

Mais je veux juste une seul ligne et une seul colonne. Voici le résultats attendus :

blue, red, green

Comment je peux procéder pour avoir la sortie ci-dessus?

Vous pouvez utiliser la fonction MySQL GROUP_CONCAT:

SELECT color_id,
   GROUP_CONCAT(color SEPARATOR ', ')
FROM colors_table
GROUP BY color_id;

Vous pouvez ajouter l’opérateur DISTINCT pour éviter les doublons:

SELECT color_id,
   GROUP_CONCAT(DISTINCT color SEPARATOR ', ')
FROM colors_table
GROUP BY color_id;

Vous pouvez également trier les valeurs avant de les concaténer en utilisant ORDER BY :

SELECT color_id, 
       GROUP_CONCAT(color ORDER BY color ASC SEPARATOR ', ')
FROM colors_table
GROUP BY color_id;

Utilisez GROUP_CONCAT avec la clause IN :

SELECT GROUP_CONCAT(color SEPARATOR ' + ') AS colors_list 
FROM colors_table
WHERE color_id IN (4, 5, 6);

La sortie :

+------------------------------------------------+
| colors_list                                    |
+------------------------------------------------+
| blue + red + green                             |
+------------------------------------------------+

Dans mon cas, j’avais une ligne d’Ids, et il était nécessaire de les convertir en chars, sinon le résultat était encodé en format binaire :

SELECT CAST(GROUP_CONCAT(column_name SEPARATOR ',') AS CHAR) FROM table_name;