Maison >base de données >tutoriel mysql >Comment puis-je combiner plusieurs lignes dans une chaîne séparée par des virgules à l'aide de MySQL ?

Comment puis-je combiner plusieurs lignes dans une chaîne séparée par des virgules à l'aide de MySQL ?

Susan Sarandon
Susan Sarandonoriginal
2024-11-22 16:44:12449parcourir

How can I Combine Multiple Rows into a Comma-Separated String Using MySQL?

MySQL : Consolidation de plusieurs lignes dans une chaîne séparée par des virgules

Dans MySQL, la fonction GROUP_CONCAT peut être utilisée pour fusionner plusieurs lignes dans un chaîne unique séparée par des virgules. Cette technique est particulièrement utile lors de la combinaison de données de tableaux avec des relations un-à-plusieurs.

Énoncé du problème

Considérez les tableaux suivants :

| DISH |
|---|---|
| dish_id | dish_name |
| 1 | dish_1 |
| 2 | dish_2 |
| 3 | dish_3 |
| 4 | dish_4 |

| DISH_HAS_DISHES |
|---|---|
| meal_id | dish_id |
| 1 | 2 |
| 1 | 3 |
| 1 | 4 |

Le but est de transformer ces données dans un format où chaque repas_id est associé à une liste de plats_ids et de noms de plats séparés par des virgules. Le résultat souhaité est :

| meal_id | dish_ids | dish_names |
|---|---|---|
| 1 | 2,3,4 | dish_2, dish_3, dish_4 |

Solution

La fonction GROUP_CONCAT fournit un moyen efficace pour réaliser cette consolidation. La requête suivante rejoint les tables DISH et DISH_HAS_DISHES, regroupe les résultats par Meal_id et utilise la fonction GROUP_CONCAT pour concaténer les valeurs Dish_id et Dish_name pour chaque groupe :

SELECT m.meal_id,
       GROUP_CONCAT(dish_id) AS dish_ids,
       GROUP_CONCAT(dish_name) AS dish_names
FROM DISH_HAS_DISHES m JOIN DISH d ON (m.dish_id = d.dish_id)
GROUP BY meal_id;

Résultat

L'exécution de cette requête produira le résultat souhaité sortie :

| meal_id | dish_ids | dish_names |
|---|---|---|
| 1 | 2,3,4 | dish_2, dish_3, dish_4 |

Conclusion

La fonction GROUP_CONCAT fournit un outil puissant pour combiner plusieurs lignes en une seule chaîne. Cette technique est particulièrement utile dans les scénarios où vous devez consolider les données de tables liées, comme dans le cas de relations un-à-plusieurs.

Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

Déclaration:
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn