Maison > base de données > tutoriel mysql > le corps du texte

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

Susan Sarandon
Libérer: 2024-11-22 16:44:12
original
354 Les gens l'ont consulté

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 |
Copier après la connexion

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 |
Copier après la connexion
Copier après la connexion

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;
Copier après la connexion

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 |
Copier après la connexion
Copier après la connexion

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!

source:php.cn
Déclaration de ce site Web
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
Derniers articles par auteur
Tutoriels populaires
Plus>
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal