Résultats de commande dans GROUP_CONCAT avec ORDER BY
Dans une situation où vous avez une table avec plusieurs lignes par client et que vous souhaitez regrouper et concaténer les données dans un ordre spécifique, GROUP_CONCAT peut être utilisé avec la clause ORDER BY. Considérons une table nommée li contenant les données suivantes :
client_id | views | percentage |
---|---|---|
1 | 6 | 20 |
1 | 4 | 55 |
1 | 9 | 56 |
1 | 2 | 67 |
1 | 7 | 80 |
1 | 5 | 66 |
1 | 3 | 33 |
1 | 8 | 34 |
1 | 1 | 52 |
Initialement, une simple requête GROUP_CONCAT a été utilisée :
SELECT li.client_id, group_concat(li.views) AS views, group_concat(li.percentage) FROM li GROUP BY client_id;
Cela a entraîné une concaténation non ordonnée :
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 |
Pour classer les vues par ordre croissant, nous pouvons utiliser GROUP_CONCAT avec ORDER BY comme suit :
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 renverra les résultats dans l'ordre souhaité :
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!