Renvoyer les 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 elle é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 (8,2,5,9,7);
SELECT id FROM table WHERE id in (8,2,5,9,7);
SELECT id FROM table WHERE id in (8,2,5,9,7);
SELECT id FROM table WHERE id in (7,2,5,9,8) ORDER BY FIND_IN_SET(id,"7,2,5,9,8");
SELECT id FROM table OÙ id dans (7,2,5,9,8) ORDER BY FIND_IN_SET(id,"7,2,5,9,8");
La fonction FIND_IN_SET 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 de 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é.
Clause de non-responsabilité: Toutes les ressources fournies proviennent en partie d'Internet. En cas de violation de vos droits d'auteur ou d'autres droits et intérêts, veuillez expliquer les raisons détaillées et fournir une preuve du droit d'auteur ou des droits et intérêts, puis l'envoyer à l'adresse e-mail : [email protected]. Nous nous en occuperons pour vous dans les plus brefs délais.
Copyright© 2022 湘ICP备2022001581号-3