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

Ordenação por valor de campo específico primeiro


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.