Mysql
 sql >> Database >  >> RDS >> Mysql

Ordinare prima per valore di campo specifico

C'è anche il MySQL FIELD funzione .

Se desideri un ordinamento completo per tutti i valori possibili:

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

Se ti interessa solo che "core" sia il primo e gli altri valori non contano:

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

Se vuoi ordinare prima per "core" e gli altri campi in un normale ordinamento:

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

Ci sono alcuni avvertimenti qui, però:

Innanzitutto, sono abbastanza sicuro che questa sia una funzionalità solo per mysql:la domanda è contrassegnata come mysql, ma non si sa mai.

Secondo, presta attenzione a come FIELD() funziona:restituisce l'indice a base singola del valore - nel caso di FIELD(priority, "core") , restituirà 1 se "core" è il valore. Se il valore del campo non è nell'elenco, restituisce zero . Ecco perché DESC è necessario a meno che tu non specifichi tutti i valori possibili.