Dans le domaine de MySQL, vous pouvez rencontrer le besoin de manipuler les données renvoyées par une instruction GROUP_CONCAT. Une exigence courante consiste à trier les valeurs dans la chaîne concaténée.
Pour y parvenir, vous pouvez exploiter le joyau caché de la fonction GROUP_CONCAT : la clause ORDER BY. En ajoutant une clause ORDER BY à la sous-requête dans GROUP_CONCAT, vous pouvez trier les valeurs avant qu'elles ne soient concaténées.
Par exemple, considérons la requête suivante :
GROUP_CONCAT((SELECT GROUP_CONCAT(parent.name SEPARATOR " » ") FROM test_competence AS node, test_competence AS parent WHERE node.lft BETWEEN parent.lft AND parent.rgt AND node.id = l.competence AND parent.id != 1 ORDER BY parent.lft) SEPARATOR "<br />\n") AS competences
Cette requête renvoie des lignes avec les valeurs concaténées de la colonne parent.name, triées par ordre croissant en fonction de la colonne parent.lft.
Cependant, si vous désirez un ordre spécifique, tel que l'ordre décroissant, ajustez simplement la clause ORDER BY :
... ORDER BY parent.lft DESC
Il convient de noter que la clause ORDER BY dans GROUP_CONCAT n'est applicable qu'à la sous-requête la plus interne. Si vous disposez d'une sous-requête multicouche, les requêtes externes ne seront pas affectées par la clause ORDER BY.
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!