Mysql
 sql >> Base de Dados >  >> RDS >> Mysql

Retornando os resultados da consulta em ordem predefinida


Não achei que isso fosse possível, mas encontrei uma entrada de blog aqui que parece fazer o tipo de coisa que você procura:
SELECT id FROM table WHERE id in (7,2,5,9,8) 
ORDER BY FIND_IN_SET(id,"7,2,5,9,8");

dará resultados diferentes para
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 retorna a posição de id no segundo argumento dado a ele, então para o primeiro caso acima, id de 7 está na posição 1 no conjunto, 2 em 2 e assim por diante - o mysql internamente funciona algo como
id | FIND_IN_SET
---|-----------
7  | 1
2  | 2
5  | 3

então ordena pelos resultados de FIND_IN_SET .