Maison >base de données >tutoriel mysql >Comment puis-je utiliser GROUP_CONCAT pour combiner plusieurs lignes en une seule ligne avec des valeurs séparées par des virgules dans MySQL ?

Comment puis-je utiliser GROUP_CONCAT pour combiner plusieurs lignes en une seule ligne avec des valeurs séparées par des virgules dans MySQL ?

DDD
DDDoriginal
2024-11-16 05:22:02354parcourir

How can I use GROUP_CONCAT to combine multiple rows into a single row with comma-separated values in MySQL?

Extraire des lignes sous forme de valeurs séparées par des virgules dans MySQL : exploration de la fonction GROUP_CONCAT

Le défi de transformer plusieurs lignes en une seule ligne avec des valeurs séparées par des virgules dans MySQL se pose souvent lorsque vous traitez des données associées provenant de plusieurs tables. Cette tâche peut être accomplie avec élégance en utilisant la puissante fonction GROUP_CONCAT.

Pour atteindre cet objectif, considérons l'exemple fourni. Deux tables, DISH et DISH_HAS_DISHES, représentent une relation un-à-plusieurs entre les plats et les repas. L'exigence est de créer un format qui rassemble les identifiants et les noms des plats pour chaque repas sous forme de valeurs séparées par des virgules.

La solution réside dans la fonction GROUP_CONCAT. Cette fonction concatène efficacement les valeurs d'une expression pour chaque groupe de lignes, produisant une seule chaîne. Dans ce cas, l'expression est la combinaison des attributs Dish_id et Dish_name.

Pour transformer les données, une requête joignant les tables DISH_HAS_DISHES et DISH peut être construite :

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

L'instruction JOIN relie les deux tables, tandis que GROUP BY regroupe les lignes par la colonne repas_id. Pour chaque repas, la fonction GROUP_CONCAT regroupe les valeurs Dish_id et Dish_name dans les colonnes Dish_ids et Dish_names, respectivement, séparées par des virgules.

En conséquence, la requête produit le format souhaité : une seule ligne pour chaque repas, avec ID et noms de plats séparés par des virgules. L'utilisation de la fonction GROUP_CONCAT résout efficacement le défi de l'extraction de plusieurs lignes en une seule ligne avec des valeurs séparées par des virgules dans MySQL. De plus, cette approche peut être appliquée à divers scénarios de bases de données, améliorant ainsi les capacités de récupération et de manipulation des données.

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