Mysql
 sql >> Database >  >> RDS >> Mysql

La restituzione dei risultati della query in un ordine predefinito

Non pensavo fosse possibile, ma ho trovato un articolo di blog qui che sembra fare il tipo di cosa che stai cercando:

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

darà risultati diversi a

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 restituisce la posizione di id nel secondo argomento ad esso dato, quindi per il primo caso sopra, id di 7 è in posizione 1 nel set, 2 in 2 e così via - mysql internamente funziona qualcosa come

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

quindi ordini in base ai risultati di FIND_IN_SET .