Heim >Datenbank >MySQL-Tutorial >Wie sortiere ich MySQL-Ergebnisse nach der in der IN()-Klausel angegebenen Reihenfolge?
MySQL: Ergebnisse nach der Reihenfolge der IN()-Spezifikation sortieren
Beim Abrufen von Daten mit einer IN()-Klausel die Reihenfolge beibehalten Die angegebenen Werte können die Lesbarkeit und Benutzerfreundlichkeit der Ausgabe verbessern. In diesem Artikel wird eine Lösung untersucht, um die Ergebnisse basierend auf der Wertefolge innerhalb der Funktion IN() zu sortieren.
Betrachten Sie die folgende Abfrage:
SELECT id, name FROM mytable WHERE name IN ('B', 'A', 'D', 'E', 'C');
Diese Abfrage gibt die folgende Ausgabe zurück, wobei Die Reihenfolge der Zeilen stimmt nicht mit der Reihenfolge in der IN()-Klausel überein:
| id | Name |
^--------^---------^
| 5 | B |
| 6 | B |
| 1 | D |
| 15 | E |
| 17 | E |
| 9 | C |
| 18 | C |
Um die Ergebnisse in der in der IN()-Klausel angegebenen Reihenfolge zu sortieren, können wir die FIELD-Funktion verwenden. Die FIELD-Funktion nimmt einen Wert als erstes Argument und gibt die Position dieses Werts in der verbleibenden Liste von Argumenten zurück.
Die folgende Abfrage verwendet die FIELD-Funktion, um die Ergebnisse basierend auf der Position des „Namens“ zu sortieren. Spaltenwerte in der Liste ('B', 'A', 'D', 'E', 'C'):
SELECT id, name FROM mytable WHERE name IN ('B', 'A', 'D', 'E', 'C') ORDER BY FIELD(name, 'B', 'A', 'D', 'E', 'C')
Diese Abfrage gibt die folgende Ausgabe zurück:
| id | Name |
^--------^---------^
| 5 | B |
| 6 | B |
| 1 | D |
| 15 | E |
| 17 | E |
| 9 | C |
| 18 | C |
Wie Sie sehen können, sind die Zeilen jetzt in der Reihenfolge angeordnet, die ursprünglich in der IN()-Klausel angegeben wurde.
Das obige ist der detaillierte Inhalt vonWie sortiere ich MySQL-Ergebnisse nach der in der IN()-Klausel angegebenen Reihenfolge?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!