Mysql
 sql >> Base de données >  >> RDS >> Mysql

Renvoyer les résultats de la requête dans un ordre prédéfini

Je ne pensais pas que c'était possible, mais j'ai trouvé une entrée de blog ici qui semble faire le genre de chose que vous recherchez :

SELECT id FROM table WHERE id in (7,2,5,9,8) 
ORDER BY FIND_IN_SET(id,"7,2,5,9,8");

donnera des résultats différents à

SELECT id FROM table WHERE id in (7,2,5,9,8) 
ORDER BY FIND_IN_SET(id,"8,2,5,9,7");

FIND_IN_SET renvoie la position de id dans le deuxième argument qui lui est donné, donc pour le premier cas ci-dessus, id de 7 est à la position 1 dans l'ensemble, 2 à 2 et ainsi de suite - mysql fonctionne en interne quelque chose comme

id | FIND_IN_SET
---|-----------
7  | 1
2  | 2
5  | 3

puis trie par les résultats de FIND_IN_SET .