MySQL-Datenbank-Ergebnissortierung: Priorisieren Sie bestimmte Feldwerte
Bei Datenbanktabellenoperationen ist es eine häufige Anforderung, Datensätze mit bestimmten Feldwerten zu priorisieren. Betrachten Sie beispielsweise eine Tabelle mit den folgenden Spalten und Daten:
id | name | priority |
---|---|---|
1 | core | 10 |
2 | core | 9 |
3 | other | 8 |
4 | board | 7 |
5 | board | 6 |
6 | core | 4 |
Die Aufgabe besteht darin, die Ergebnisse basierend auf dem Feld priority
neu zu ordnen, dabei jedoch den Zeilen Priorität einzuräumen, in denen name
gleich „Kern“ ist. Die gewünschte Ausgabe lautet wie folgt:
id | name | priority |
---|---|---|
6 | core | 4 |
2 | core | 9 |
1 | core | 10 |
5 | board | 6 |
4 | board | 7 |
3 | other | 8 |
In MySQL kann diese Sortierung mit der Funktion FIELD()
erreicht werden. Hier sind einige Möglichkeiten:
Alle Werte vollständig sortieren:
<code class="language-sql">SELECT id, name, priority FROM mytable ORDER BY FIELD(name, "core", "board", "other");</code>
Diese Abfrage sortiert die Ergebnisse entsprechend der in der Funktion FIELD()
angegebenen Reihenfolge und gibt den zuerst angezeigten Werten Priorität.
Nur „Kern“ wird priorisiert:
<code class="language-sql">SELECT id, name, priority FROM mytable ORDER BY FIELD(name, "core") DESC;</code>
Diese Abfrage priorisiert Zeilen, bei denen DESC
gleich „Kern“ ist, mithilfe von name
, unabhängig von ihren anderen Feldwerten.
Behält die Sortierreihenfolge anderer Werte bei:
<code class="language-sql">SELECT id, name, priority FROM mytable ORDER BY FIELD(name, "core") DESC, priority;</code>
Diese Abfrage priorisiert zuerst die „Kern“-Zeilen mithilfe von FIELD()
und sortiert dann die verbleibenden Zeilen in normaler priority
-Reihenfolge.
Es ist wichtig zu beachten, dass die Funktion FIELD()
den einsbasierten Index des übereinstimmenden Werts oder Null zurückgibt, wenn der Wert nicht gefunden wird. Daher muss DESC
verwendet werden, sofern nicht alle möglichen Werte angegeben sind.
Das obige ist der detaillierte Inhalt vonWie priorisiere ich bestimmte Feldwerte beim Sortieren von Datenbankergebnissen in MySQL?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!