Es gibt auch die MySQL- FIELD
Funktion .
Wenn Sie eine vollständige Sortierung für alle möglichen Werte wünschen:
SELECT id, name, priority
FROM mytable
ORDER BY FIELD(name, "core", "board", "other")
Wenn Sie sich nur darum kümmern, dass "Kern" an erster Stelle steht und die anderen Werte keine Rolle spielen:
SELECT id, name, priority
FROM mytable
ORDER BY FIELD(name, "core") DESC
Wenn Sie zuerst nach "Kern" und den anderen Feldern in normaler Sortierreihenfolge sortieren möchten:
SELECT id, name, priority
FROM mytable
ORDER BY FIELD(name, "core") DESC, priority
Hier gibt es jedoch einige Einschränkungen:
Erstens bin ich mir ziemlich sicher, dass dies nur eine MySQL-Funktion ist - die Frage ist mit MySQL gekennzeichnet, aber Sie wissen es nie.
Zweitens sollten Sie darauf achten, wie es FIELD()
funktioniert: Es gibt den einbasierten Index des Werts zurück - im Fall von FIELD(priority, "core")
gibt es 1 zurück, wenn "core" der Wert ist. Wenn der Wert des Feldes nicht in der Liste enthalten ist, wird Null zurückgegeben . Aus diesem Grund DESC
ist dies erforderlich, sofern Sie nicht alle möglichen Werte angeben.