Maison > base de données > tutoriel mysql > Comment puis-je contrôler l'ordre des valeurs dans la fonction GROUP_CONCAT de MySQL ?

Comment puis-je contrôler l'ordre des valeurs dans la fonction GROUP_CONCAT de MySQL ?

DDD
Libérer: 2024-12-01 15:44:12
original
665 Les gens l'ont consulté

How Can I Control the Order of Values in MySQL's GROUP_CONCAT Function?

Ordre des résultats dans GROUP_CONCAT

Lors de l'utilisation de la fonction GROUP_CONCAT pour combiner des valeurs pour des lignes groupées, il peut être utile de conserver l'ordre de ces valeurs.

Problème : Résultats non ordonnés

Supposons que nous ayons une table nommée « li » avec des colonnes : client_id, vues et pourcentage. Nous voulons regrouper les lignes par client_id et concaténer les valeurs des vues. Nous essayons d'abord ce qui suit :

SELECT li.client_id,
       group_concat(li.views) AS views,
       group_concat(li.percentage) FROM li
       GROUP BY client_id;
Copier après la connexion

Cela produit des résultats avec les vues concaténées, mais dans un ordre arbitraire :

+-----------+-------------------+-----------------------------+
| client_id | views             | group_concat(li.percentage) |
+-----------+-------------------+-----------------------------+
|         1 | 6,4,9,2,7,5,3,8,1 | 20,55,56,67,80,66,33,34,52  |
+-----------+-------------------+-----------------------------+
Copier après la connexion

Solution : Ordre dans GROUP_CONCAT

À ordonner les résultats dans le GROUP_CONCAT, nous pouvons utiliser ORDER BY dans la fonction :

SELECT li.client_id,
       group_concat(li.views ORDER BY li.views ASC) AS views,
       group_concat(li.percentage ORDER BY li.views ASC) AS percentage
       FROM li
       GROUP BY client_id
Copier après la connexion

Cela ordonnera les vues colonne par ordre croissant, tout en conservant les valeurs de pourcentage correspondantes dans le même ordre :

+-----------+-------------------+----------------------------+
| client_id | views             | percentage                 |
+-----------+-------------------+----------------------------+
|         1 | 1,2,3,4,5,6,7,8,9 | 52,67,33,55,66,20,80,34,56 |
+-----------+-------------------+----------------------------+
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!

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