Há também a função MySQLFIELD
.
Se você deseja 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ê só se importa que o "núcleo" esteja em primeiro lugar e os outros valores não importem:
SELECT id, name, priority
FROM mytable
ORDER BY FIELD(name, "core") DESC
Se você deseja classificar por "núcleo" primeiro e os outros campos na ordem de classificação normal:
SELECT id, name, priority
FROM mytable
ORDER BY FIELD(name, "core") DESC, priority
Existem algumas ressalvas aqui, no entanto:
Em primeiro lugar, tenho quase certeza de que essa é uma funcionalidade somente do mysql - a questão é chamada de mysql, mas nunca se sabe.
Em segundo lugar, 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 "núcleo" for o valor. Se o valor do campo não estiver na lista, ele retorna zero . É por isso que DESC
é necessário, a menos que você especifique todos os valores possíveis.