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
DDDoriginal
2024-12-01 15:44:12579parcourir

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;

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  |
+-----------+-------------------+-----------------------------+

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

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 |
+-----------+-------------------+----------------------------+

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