Maison > base de données > tutoriel mysql > Comment combiner GROUP_CONCAT et CONCAT pour une agrégation de données complexe dans MySQL ?

Comment combiner GROUP_CONCAT et CONCAT pour une agrégation de données complexe dans MySQL ?

DDD
Libérer: 2024-12-17 21:11:11
original
865 Les gens l'ont consulté

How to Combine GROUP_CONCAT and CONCAT for Complex Data Aggregation in MySQL?

Comment utiliser GROUP_CONCAT dans un CONCAT dans MySQL

Dans certains scénarios, vous pouvez rencontrer le besoin de transformer les données stockées dans une table MySQL dans un format spécifique. Par exemple, supposons que vous ayez un tableau avec des données comme celle-ci :

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

Votre objectif est d'obtenir les résultats suivants :

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

Pour réaliser cette transformation, vous devrez utilisez la fonction GROUP_CONCAT(). Cette fonction se distingue par sa capacité à concaténer les valeurs de plusieurs lignes, regroupées selon certains critères.

Pour commencer, vous devrez générer une sous-requête qui concatène les valeurs regroupées à la fois par identifiant et par nom. L'extrait de code suivant illustre cette étape :

select id, 
concat(`Name`, ':', group_concat(`Value` separator ',')) as Name
from mytbl group by id, Name
Copier après la connexion

La sous-requête résultante créera une nouvelle colonne appelée Nom qui comprend toutes les valeurs concaténées par des deux-points et des virgules, regroupées par identifiant et Nom.

| id | Name |
| --- | ---- |
| 1 | A:4,5 |
| 1 | B:8 |
| 2 | C:9 |
Copier après la connexion

Enfin, appliquez à nouveau GROUP_CONCAT() à la requête la plus externe, cette fois en utilisant id comme critère de regroupement. Cette étape concatènera les valeurs Name de la sous-requête, séparées par des virgules :

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

Le résultat sera exactement comme souhaité :

| id | Column |
| --- | ----- |
| 1 | A:4,5,B:8 |
Copier après la connexion

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
Tutoriels populaires
Plus>
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal