Maison > base de données > tutoriel mysql > Comment récupérer les résultats d'une requête SQL dans un ordre prédéfini sans utiliser ORDER BY ?

Comment récupérer les résultats d'une requête SQL dans un ordre prédéfini sans utiliser ORDER BY ?

DDD
Libérer: 2024-10-30 04:24:02
original
284 Les gens l'ont consulté

How to Retrieve SQL Query Results in a Predefined Order Without Using ORDER BY?

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);
Copier après la connexion
SELECT id FROM table WHERE id in (8,2,5,9,7);
Copier après la connexion

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");
Copier après la connexion

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!

source:php.cn
Déclaration de ce site Web
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn
Tutoriels populaires
Plus>
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal