Dans MySQL, la fonction GROUP_CONCAT() concatène les valeurs d'une table, regroupées par une colonne spécifique. Cependant, le comportement par défaut consiste à afficher les valeurs dans l'ordre dans lequel elles apparaissent dans le tableau. Ce n'est pas toujours le résultat souhaité, surtout lorsque vous avez besoin de trier les valeurs concaténées.
Pour trier les valeurs dans une instruction GROUP_CONCAT, vous pouvez utiliser la clause ORDER BY dans la sous-requête. 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 les valeurs concaténées des noms de compétences parents, triées par ordre croissant.
Crafts » Joinery Administration » Organization
En spécifiant la clause ORDER BY dans la sous-requête, nous pouvons contrôler la séquence des valeurs concaténées. Cela offre un moyen flexible de présenter les résultats dans un ordre personnalisé, les rendant plus lisibles et organisés.
N'oubliez pas que la clause ORDER BY doit être placée entre parenthèses de la sous-requête qui suit GROUP_CONCAT(). Cela permet à MySQL de trier les valeurs avant de les concaténer en une seule chaîne.
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!