Mysql
 sql >> Datenbank >  >> RDS >> Mysql

Sortieren Sie zuerst nach einem bestimmten Feldwert

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.