sql >> Base de Datos >  >> RDS >> Mysql

Ordenar por valor de campo específico primero

También está el MySQL FIELD función .

Si desea una clasificación completa para todos los valores posibles:

SELECT id, name, priority
FROM mytable
ORDER BY FIELD(name, "core", "board", "other")

Si solo le importa que "núcleo" sea lo primero y los otros valores no importan:

SELECT id, name, priority
FROM mytable
ORDER BY FIELD(name, "core") DESC

Si desea ordenar primero por "núcleo" y los otros campos en el orden de clasificación normal:

SELECT id, name, priority
FROM mytable
ORDER BY FIELD(name, "core") DESC, priority

Sin embargo, hay algunas advertencias aquí:

Primero, estoy bastante seguro de que esta es una funcionalidad exclusiva de mysql:la pregunta está etiquetada como mysql, pero nunca se sabe.

En segundo lugar, preste atención a cómo FIELD() funciona:devuelve el índice basado en uno del valor - en el caso de FIELD(priority, "core") , devolverá 1 si "núcleo" es el valor. Si el valor del campo no está en la lista, devuelve cero . Por eso DESC es necesario a menos que especifique todos los valores posibles.