Mysql
 sql >> Datenbank >  >> RDS >> Mysql

Abfrageergebnisse in vordefinierter Reihenfolge zurückgeben

Ich hätte das nicht für möglich gehalten, aber einen Blogeintrag hier gefunden das scheint die Art von Sache zu tun, nach der Sie suchen:

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

gibt unterschiedliche Ergebnisse zu

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 gibt die Position von id zurück im zweiten übergebenen Argument, also für den ersten Fall oben, id von 7 ist an Position 1 in der Menge, 2 an 2 und so weiter - mysql rechnet intern so etwas wie

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

ordnet dann nach den Ergebnissen von FIND_IN_SET .