C'è anche la funzione MySQLFIELD
.
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 desideri ordinare prima per "core" e gli altri campi nel 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 mysql: la domanda è contrassegnata come mysql, ma non si sa mai.
Secondo, prestare attenzione a come FIELD()
funziona: restituisce l' indice a base uno del valore - nel caso di FIELD(priority, "core")
, restituirà 1 se "core" è il valore. Se il valore del campo non è nell'elenco, restituisce zero . Questo è il motivo per cui DESC
è necessario a meno che non si specifichino tutti i valori possibili.