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 |
+------------------------------------------------+
Henri
Mai 5, 2022, 11:48
4
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;