Maison >base de données >tutoriel mysql >Comment concaténer plusieurs lignes en une seule chaîne à l'aide de GROUP_CONCAT et CONCAT dans MySQL ?

Comment concaténer plusieurs lignes en une seule chaîne à l'aide de GROUP_CONCAT et CONCAT dans MySQL ?

Mary-Kate Olsen
Mary-Kate Olsenoriginal
2024-12-13 01:00:10463parcourir

How to Concatenate Multiple Rows into a Single String Using GROUP_CONCAT and CONCAT in MySQL?

Utilisation de GROUP_CONCAT dans CONCAT dans MySQL

Pour concaténer plusieurs lignes en une seule chaîne, tout en les regroupant par valeurs communes, vous pouvez utiliser le Fonction GROUP_CONCAT. Explorons son application avec un exemple pratique.

Question :

Étant donné une table nommée mytbl avec les données suivantes :

id Name Value
1 A 4
1 A 5
1 B 8
2 C 9

Comment peut-on nous transformons ces données en ce qui suit format :

id Column
1 A:4,5,B:8
2 C:9

Réponse :

Pour y parvenir, vous pouvez utiliser une combinaison de fonctions GROUP_CONCAT et CONCAT imbriquées :

select id, group_concat(`Name` separator ',') as `ColumnName`
from
(
  select id, 
  concat(`Name`, ':', group_concat(`Value` separator ',')) as Name
   from mytbl group by id, Name
) tbl
group by id;

Explication :

  • La requête la plus interne regroupe les données par à la fois id et Name, puis concatène la colonne Value avec une virgule comme séparateur pour chaque groupe.
  • La requête externe regroupe les résultats par id et concatène les chaînes Name précédemment concaténées, qui contiennent désormais les valeurs de chaque Name. au sein de chaque identifiant.

Cette combinaison GROUP_CONCAT et CONCAT imbriquée vous permet de générer la sortie souhaitée, où chaque identifiant est associé à un chaîne de nom séparée par des virgules et leur valeur correspondante.

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