K dispozici je také MySQL FIELD
funkce
.
Pokud chcete úplné řazení pro všechny možné hodnoty:
SELECT id, name, priority
FROM mytable
ORDER BY FIELD(name, "core", "board", "other")
Pokud vás zajímá pouze to, že „core“ je první a na ostatních hodnotách nezáleží:
SELECT id, name, priority
FROM mytable
ORDER BY FIELD(name, "core") DESC
Pokud chcete nejprve seřadit podle "jádra" a podle ostatních polí v normálním pořadí:
SELECT id, name, priority
FROM mytable
ORDER BY FIELD(name, "core") DESC, priority
Je zde však několik upozornění:
Za prvé, jsem si docela jistý, že se jedná pouze o funkci mysql – otázka je označena jako mysql, ale člověk nikdy neví.
Za druhé, věnujte pozornost tomu, jak FIELD()
funguje:vrací index založený na jednom hodnoty - v případě FIELD(priority, "core")
, vrátí 1, pokud je hodnota "core". Pokud hodnota pole není v seznamu, vrátí nulu . To je důvod, proč DESC
je nutné, pokud nezadáte všechny možné hodnoty.