Há também o MySQL
FIELD
função
. Se você quiser uma classificação completa para todos os valores possíveis:
SELECT id, name, priority
FROM mytable
ORDER BY FIELD(name, "core", "board", "other")
Se você se importa apenas que "core" seja o primeiro e os outros valores não importam:
SELECT id, name, priority
FROM mytable
ORDER BY FIELD(name, "core") DESC
Se você quiser classificar primeiro por "core" e os outros campos na ordem de classificação normal:
SELECT id, name, priority
FROM mytable
ORDER BY FIELD(name, "core") DESC, priority
Há algumas ressalvas aqui, no entanto:
Primeiro, tenho certeza de que esta é uma funcionalidade somente do mysql - a pergunta é marcada como mysql, mas nunca se sabe.
Segundo, preste atenção em como
FIELD()
funciona:ele retorna o índice baseado em um do valor - no caso de FIELD(priority, "core")
, ele retornará 1 se "core" for o valor. Se o valor do campo não estiver na lista, ele retornará zero . É por isso que DESC
é necessário a menos que você especifique todos os valores possíveis.