Renvoi des résultats d'une requête dans un ordre prédéfini
En SQL, il est généralement difficile de récupérer les résultats d'une requête dans un ordre particulier, sauf indication contraire à l'aide de la commande ORDER. Clause PAR. Cependant, dans certains scénarios, la clause ORDER BY peut ne pas être applicable, par exemple lorsque vous tentez de récupérer des données dans un ordre prédéterminé en fonction uniquement des valeurs d'un champ spécifique.
Une discussion récente a évoqué un scénario dans lequel il était souhaite sélectionner les identifiants (7, 2, 5, 9 et 8) et les récupérer dans cet ordre exact sans s'appuyer sur des critères supplémentaires. Les requêtes suivantes renvoient toutes deux les résultats dans un ordre imprévisible :
SELECT id FROM table WHERE id in (7,2,5,9,8);
SELECT id FROM table WHERE id in (8,2,5,9,7);
Une nouvelle solution a été découverte grâce à une entrée de blog qui aborde ce problème avec élégance :
SELECT id FROM table WHERE id in (7,2,5,9,8) ORDER BY FIND_IN_SET(id,"7,2,5,9,8");
Le FIND_IN_SET La fonction est utilisée pour renvoyer la position d’une valeur spécifiée dans un ensemble donné. Par exemple, l'identifiant 7 a une position de 1, l'identifiant 2 a une position de 2, et ainsi de suite.
Lors de l'application de la clause ORDER BY avec FIND_IN_SET, l'instruction ORDER BY comprend les positions et ordonne efficacement les résultats. en fonction des valeurs spécifiées. Cette solution exploite un mécanisme interne à MySQL pour obtenir l'ordre prédéterminé souhaité.
Il convient de noter que cette technique peut être une alternative intéressante lorsque la clause ORDER BY ne peut pas être utilisée pour spécifier l'ordre souhaité.
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!