Има и MySQL FIELD
функция
.
Ако искате пълно сортиране за всички възможни стойности:
SELECT id, name, priority
FROM mytable
ORDER BY FIELD(name, "core", "board", "other")
Ако ви интересува само това, че "core" е първо и другите стойности нямат значение:
SELECT id, name, priority
FROM mytable
ORDER BY FIELD(name, "core") DESC
Ако искате първо да сортирате по „ядро“, а останалите полета в нормален ред:
SELECT id, name, priority
FROM mytable
ORDER BY FIELD(name, "core") DESC, priority
Тук обаче има някои предупреждения:
Първо, почти съм сигурен, че това е функционалност само за mysql – въпросът е с етикет mysql, но никога не се знае.
Второ, обърнете внимание как FIELD()
работи:връща едно-базиран индекс на стойността - в случай на FIELD(priority, "core")
, ще върне 1, ако стойността е "core". Ако стойността на полето не е в списъка, то връща нула . Ето защо DESC
е необходимо, освен ако не посочите всички възможни стойности.