Es gibt auch das 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 "core" 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 Vorbehalte:
Erstens bin ich mir ziemlich sicher, dass dies eine reine MySQL-Funktionalität ist - die Frage ist mit mysql gekennzeichnet, aber man weiß ja nie.
Achten Sie zweitens darauf, wie FIELD()
funktioniert:es gibt den Eins-basierten Index zurück des Werts - im Fall von FIELD(priority, "core")
, wird 1 zurückgegeben, wenn "core" der Wert ist. Wenn der Wert des Felds nicht in der Liste enthalten ist, wird Null zurückgegeben . Deshalb DESC
ist erforderlich, es sei denn, Sie geben alle möglichen Werte an.