BESTELLEN NACH in MySQLASC- und DESC-Abfrage mit Beispiel
โก Intelligente Zusammenfassung
BESTELLEN NACH in MySQL Die Abfrageergebnisse werden mithilfe der Schlรผsselwรถrter ASC und DESC aufsteigend oder absteigend sortiert. In den folgenden Abschnitten werden die Syntax, die Sortierung in ein- und mehrspaltigen Datensรคtzen, die Behandlung von NULL-Werten sowie Anwendungsbeispiele anhand der Beispieldatenbank myflixdb erlรคutert.

Was ist ORDER BY in? MySQL?
MySQL SORTIEREN NACH ist eine Klausel, die in Verbindung mit der SELECT-Abfrage verwendet wird, um Daten in geordneter Weise zu sortieren. MySQL Die ORDER BY-Klausel sortiert das Abfrageergebnis entweder aufsteigend oder absteigend, nach einer oder nach mehreren Spalten gleichzeitig.
Wird der SELECT-Befehl allein verwendet, werden die Zeilen in der Reihenfolge zurรผckgegeben, in der die Speicher-Engine sie liest. Diese Reihenfolge ist nicht garantiert. Sortieren bedeutet, diese Zeilen in einer festgelegten Reihenfolge neu anzuordnen. Dies ist fรผr numerische Daten, Zeichenketten und Datumsangaben gleichermaรen mรถglich.
MySQL ORDER BY Syntax
Bevor wir uns Beispiele ansehen, ist es hilfreich zu sehen, wo die Klausel innerhalb einer vollstรคndigen SELECT-Anweisung steht.
SELECT statement... [WHERE condition | GROUP BY `field_name(s)` HAVING condition] ORDER BY `field_name(s)` [ASC | DESC];
HIER KLICKEN
- "SELECT-Anweisung... " ist die regulรคre SELECT-Abfrage.
- โ | โ stellt Alternativen dar.
- โ[WHERE Bedingung | GROUP BY `Feldname(n)` HAVING Bedingung]โ ist die optionale Bedingung, die zum Filtern des Abfrageergebnisses verwendet wird.
- "SORTIEREN NACH" Fรผhrt die Sortierung des Abfrageergebnisses durch.
- โ[ASC | BESCHR.]โ ist das Schlรผsselwort, mit dem die Ergebnismenge entweder aufsteigend oder absteigend sortiert wird. Beachten Sie, dass ASC ist die Vorgabe.
Was sind DESC- und ASC-Schlรผsselwรถrter?
ASC und DESC sind die beiden Sortierrichtungen, die ORDER BY akzeptiert. Die folgende Tabelle vergleicht sie anhand der Datentypen, die Sie am hรคufigsten sortieren werden.
ASC ist die Kurzform fรผr aufsteigend |
MySQL DESC ist die Kurzform fรผr absteigend |
|---|---|
| Es wird verwendet, um die Abfrageergebnisse von oben nach unten zu sortieren. | Es dient dazu, die Abfrageergebnisse von unten nach oben zu sortieren. |
| Beim Arbeiten mit Datumsdatentypen wird das frรผheste Datum oben in der Liste angezeigt. | Bei der Arbeit mit Datumsdatentypen wird das neueste Datum oben in der Liste angezeigt. |
| Beim Arbeiten mit numerischen Datentypen werden die niedrigsten Werte oben in der Liste angezeigt. | Bei der Arbeit mit numerischen Datentypen werden die hรถchsten Werte oben im Abfrageergebnis angezeigt. |
| Bei der Arbeit mit Zeichenfolgendatentypen wird die Abfrageergebnismenge von den Datentypen beginnend mit dem Buchstaben A bis zum Buchstaben Z sortiert. | Bei der Arbeit mit Zeichenfolgendatentypen wird die Abfrageergebnismenge von den Datentypen beginnend mit dem Buchstaben Z bis hinunter zum Buchstaben A sortiert. |
Die SQL-Schlรผsselwรถrter DESC und ASC werden beide in Verbindung mit der SELECT-Anweisung verwendet. MySQL ORDER BY-Klausel.
DESC- und ASC-Syntax
Das SQL DESC-Sortierschlรผsselwort hat die folgende grundlegende Syntax.
SELECT {fieldName(s) | *} FROM tableName(s) [WHERE condition] ORDER BY fieldname(s) ASC | DESC [LIMIT N];
HIER KLICKEN
- SELECT {fieldName(s) | *} FROM Tabellenname(n) ist die Anweisung, die die Felder und die Tabelle(n) enthรคlt, aus denen das Ergebnis-Set abgerufen werden soll.
- [WHERE-Bedingung] ist optional, kann aber verwendet werden, um die Daten entsprechend der angegebenen Bedingung zu filtern.
- Sortieren nach Feldname(n) ist obligatorisch und benennt das Feld, nach dem sortiert wird. MySQL Das Schlรผsselwort DESC gibt an, dass die Sortierung in absteigender Reihenfolge erfolgt.
- [LIMIT N] ist optional, kann aber verwendet werden, um die Anzahl der vom Abfrageergebnis zurรผckgegebenen Zeilen zu begrenzen.
Warum DESC und ASC verwenden? MySQL?
Die Kenntnis der Syntax ist nur die halbe Wahrheit. Der Grund fรผr die Existenz von ORDER BY ist, dass ein Ergebnis-Set, das fรผr eine Datenbank leicht zu erzeugen ist, nicht immer leicht fรผr einen Menschen lesbar ist.
Angenommen, Sie drucken die Zahlungshistorie eines Videobibliotheksmitglieds aus, damit die Mitarbeiter an der Ausleihe Anfragen schnell beantworten kรถnnen. Es ist wesentlich logischer, die Zahlungen in absteigender chronologischer Reihenfolge auszugeben, beginnend mit der aktuellsten und rรผckwรคrts bis zur รคltesten. In diesem Fall ist das SQL-Schlรผsselwort DESC sehr hilfreich, da die Liste nach dem Zahlungsdatum sortiert werden kann.
Angenommen, die Marketingabteilung benรถtigt eine Liste von Filmen nach Kategorien, damit Mitglieder vor dem Ausleihen sehen kรถnnen, welche Titel die Bibliothek bietet. Durch das Sortieren der Kategorienamen und Filmtitel in aufsteigender Reihenfolge kรถnnen Mitglieder Informationen schnell finden, genau wie in einem Index. Das ASC-Schlรผsselwort dient diesem Zweck.
Kurz gesagt, ORDER BY wandelt ein Rohdatenset in einen Bericht um. Das gewรคhlte Schlรผsselwort hรคngt von der Frage des Lesers ab: was zuletzt geschah fordert DESC, wรคhrend Wo finde ich diesen Artikel? fordert ASC.
MySQL Beispiel zum Sortieren nach
Alle folgenden Beispiele werden mit der Beispieldatenbank myflixdb ausgefรผhrt. Beginnen Sie mit der unsortierten Mitgliedertabelle, die in ihrer Standardreihenfolge zurรผckgegeben wird.
SELECT * FROM members;
Ausfรผhren des obigen Skripts in MySQL Die Workbench-Analyse von myflixdb liefert die unten aufgefรผhrten Ergebnisse.
| Mitgliedsnummer | ganze Namen | Geschlecht | Geburtsdatum | physikalische Adresse | Postanschrift | Kontaktnummer | |
|---|---|---|---|---|---|---|---|
| 1 | Janet Jones | Weiblich | 21-07-1980 | Erstes Straรengrundstรผck Nr. 4 | Private Tasche | 0759 253 542 | janetjones@yagoo.cm |
| 2 | Janet Smith Jones | Weiblich | 23-06-1980 | Melrose 123 | NULL | NULL | jj@fstreet.com |
| 3 | Robert Phil | Mรคnnlich | 12-07-1989 | 3. Straรe 34 | NULL | 12345 | rm@tstreet.com |
| 4 | Gloria Williams | Weiblich | 14-02-1984 | 2. Straรe 23 | NULL | NULL | NULL |
| 5 | Leonhard Hofstรคdter | Mรคnnlich | NULL | Waldkrone | NULL | 845738767 | NULL |
| 6 | Sheldon Cooper | Mรคnnlich | NULL | Waldkrone | NULL | 976736763 | NULL |
| 7 | Rajesh Koothrappali | Mรคnnlich | NULL | Waldkrone | NULL | 938867763 | NULL |
| 8 | Leslie Winkel | Mรคnnlich | 14-02-1984 | Waldkrone | NULL | 987636553 | NULL |
| 9 | Howard Wolowitz | Mรคnnlich | 24-08-1981 | Sรผd Park | P.O. Box 14473 | 987786553 | NULL |
Sortieren in absteigender Reihenfolge mit DESC
Angenommen, die Marketingabteilung mรถchte die Mitgliederdaten in absteigender Reihenfolge des Geburtsdatums sortieren. Dies hilft dem Team, Geburtstagsgrรผรe rechtzeitig zu versenden. Die Liste wird durch die unten stehende Abfrage erstellt.
SELECT * FROM members ORDER BY date_of_birth DESC;
Ausfรผhren des obigen Skripts in MySQL Die Workbench-Analyse von myflixdb liefert die unten aufgefรผhrten Ergebnisse.
Sortieren in aufsteigender Reihenfolge mit ASC
Die gleiche Abfrage in aufsteigender Reihenfolge vertauscht einfach das Schlรผsselwort.
SELECT * FROM members ORDER BY date_of_birth ASC;
Hinweis: NULL bedeutet, dass รผberhaupt kein Wert vorhanden ist, was nicht dasselbe ist wie Null oder eine leere Zeichenkette. Beachten Sie in beiden Screenshots, wie die NULL-Datumsangaben gruppiert sind: MySQL Behandelt NULL als niedriger als jeden anderen Wert, daher erscheinen NULL-Zeilen in der aufsteigenden Reihenfolge (ASC) zuerst und in der absteigenden Reihenfolge (DESC) zuletzt.
Wie man nach mehreren Spalten sortiert in MySQL
Das Sortieren nach einer einzelnen Spalte beantwortet einfache Fragen. Berichte benรถtigen in der Regel eine zweite Sortierebene, und ORDER BY akzeptiert eine durch Kommas getrennte Liste von Feldern genau fรผr diesen Zweck.
Betrachten Sie das folgende SQL-Sortierskript, das alle Mitgliedsdatensรคtze ohne explizite Anweisung auflistet.
SELECT * FROM `members`;
Die Ausfรผhrung des obigen Skripts fรผhrt zu den unten gezeigten Ergebnissen.
| Mitgliedsnummer | ganze Namen | Geschlecht | Geburtsdatum | physikalische Adresse | Postanschrift | Kontaktnummer | |
|---|---|---|---|---|---|---|---|
| 1 | Janet Jones | Weiblich | 21-07-1980 | Erstes Straรengrundstรผck Nr. 4 | Private Tasche | 0759 253 542 | janetjones@yagoo.cm |
| 2 | Janet Smith Jones | Weiblich | 23-06-1980 | Melrose 123 | NULL | NULL | jj@fstreet.com |
| 3 | Robert Phil | Mรคnnlich | 12-07-1989 | 3. Straรe 34 | NULL | 12345 | rm@tstreet.com |
| 4 | Gloria Williams | Weiblich | 14-02-1984 | 2. Straรe 23 | NULL | NULL | NULL |
| 5 | Leonhard Hofstรคdter | Mรคnnlich | NULL | Waldkrone | NULL | 845738767 | NULL |
| 6 | Sheldon Cooper | Mรคnnlich | NULL | Waldkrone | NULL | 976736763 | NULL |
| 7 | Rajesh Koothrappali | Mรคnnlich | NULL | Waldkrone | NULL | 938867763 | NULL |
| 8 | Leslie Winkel | Mรคnnlich | 14-02-1984 | Waldkrone | NULL | 987636553 | NULL |
| 9 | Howard Wolowitz | Mรคnnlich | 24-08-1981 | Sรผd Park | P.O. Box 14473 | 987786553 | NULL |
Sortieren einer einzelnen Spalte nach Standardreihenfolge
Angenommen, wir mรถchten eine Liste erstellen, die die Suchergebnisse nach dem Feld โGeschlechtโ sortiert. Das folgende Skript erledigt dies, ohne eine Sortierrichtung anzugeben.
SELECT * FROM `members` ORDER BY `gender`;
| Mitgliedsnummer | ganze Namen | Geschlecht | Geburtsdatum | physikalische Adresse | Postanschrift | Kontaktnummer | |
|---|---|---|---|---|---|---|---|
| 1 | Janet Jones | Weiblich | 21-07-1980 | Erstes Straรengrundstรผck Nr. 4 | Private Tasche | 0759 253 542 | janetjones@yagoo.cm |
| 2 | Janet Smith Jones | Weiblich | 23-06-1980 | Melrose 123 | NULL | NULL | jj@fstreet.com |
| 4 | Gloria Williams | Weiblich | 14-02-1984 | 2. Straรe 23 | NULL | NULL | NULL |
| 3 | Robert Phil | Mรคnnlich | 12-07-1989 | 3. Straรe 34 | NULL | 12345 | rm@tstreet.com |
| 5 | Leonhard Hofstรคdter | Mรคnnlich | NULL | Waldkrone | NULL | 845738767 | NULL |
| 6 | Sheldon Cooper | Mรคnnlich | NULL | Waldkrone | NULL | 976736763 | NULL |
| 7 | Rajesh Koothrappali | Mรคnnlich | NULL | Waldkrone | NULL | 938867763 | NULL |
| 8 | Leslie Winkel | Mรคnnlich | 14-02-1984 | Waldkrone | NULL | 987636553 | NULL |
| 9 | Howard Wolowitz | Mรคnnlich | 24-08-1981 | Sรผd Park | P.O. Box 14473 | 987786553 | NULL |
Zuerst werden die weiblichen Mitglieder angezeigt, gefolgt von den mรคnnlichen. Dies liegt daran, dass bei Verwendung der ORDER BY-Klausel ohne Angabe der Sortierreihenfolge (ASC) oder MySQL DESC-Schlรผsselwort, MySQL Sortiert das Abfrageergebnis standardmรครig in aufsteigender Reihenfolge.
Sortieren zweier Spalten in entgegengesetzte Richtungen
Betrachten wir nun ein Beispiel, das Folgendes ausfรผhrt: Sortieren nach zwei SpaltenDie erste Spalte ist sortiert in aufsteigende Reihenfolge standardmรครig, wรคhrend die zweite Spalte sortiert in absteigende Reihenfolge.
SELECT * FROM `members` ORDER BY `gender`, `date_of_birth` DESC;
Ausfรผhren des obigen Skripts in MySQL Workbench gegen myflixdb liefert die folgenden Ergebnisse.
Die Spalte โGeschlechtโ war standardmรครig aufsteigend sortiert, die Spalte โGeburtsdatumโ hingegen explizit absteigend. Jedes Richtungs-Schlรผsselwort gilt nur fรผr die Spalte, auf die es folgt.
Wie man ORDER BY mit WHERE, LIMIT und GROUP BY kombiniert
ORDER BY ist selten die einzige Klausel in einer Produktionsabfrage. MySQL Die Klauseln werden immer in einer festen Reihenfolge ausgewertet, und die Kenntnis dieser Reihenfolge erklรคrt, warum die Ergebnisse so aussehen, wie sie aussehen.
- AB Liest die Zeilen aus der Tabelle.
- WO Die Zeilen, die die Bedingung nicht erfรผllen, werden verworfen.
- GRUPPIERE NACH Die verbleibenden Zeilen werden zu Gruppen zusammengefasst, und HAVING filtert diese Gruppen.
- SORTIEREN NACH Sequenzen der verbleibenden Zeilen.
- LIMIT Schneidet die angeforderte Anzahl von Zeilen aus der sortierten Liste ab.
Da ORDER BY nach WHERE und GROUP BY, aber vor LIMIT ausgefรผhrt wird, kann eine Abfrage wie โdie fรผnf jรผngsten Mitglieder von Woodcrestโ in einer einzigen Anweisung ausgedrรผckt werden.
SELECT full_names, date_of_birth FROM members WHERE physical_address = 'Woodcrest' ORDER BY date_of_birth DESC LIMIT 5;
Die gleiche Reihenfolge gilt fรผr gruppierte Ergebnisse. Aggregatwerte, die von Aggregatfunktionen Beispielsweise kann die Anzahl sortiert werden, sodass die am stรคrksten frequentierte Kategorie ganz oben im Bericht erscheint.
SELECT gender, COUNT(*) AS members_count FROM members GROUP BY gender ORDER BY members_count DESC;
TIPP: Mit ORDER BY kann nach einem Spaltenalias, einem Ausdruck oder sogar nach der Spaltenposition sortiert werden, z. B. mit ORDER BY 3. Die Sortierung nach Position ist jedoch fehleranfรคllig, da das Einfรผgen einer neuen Spalte in die SELECT-Liste den Sortierschlรผssel stillschweigend รคndert. Benennen Sie die Spalte stattdessen.
Ein wichtiger Leistungsaspekt sollte beachtet werden. Wenn die sortierte Spalte einen Index enthรคlt, MySQL Die Zeilen kรถnnen in Indexreihenfolge gelesen werden, wodurch die Sortierung komplett รผbersprungen wird. Ohne Index erzwingen groรe Tabellen eine Sortierung im Arbeitsspeicher oder auf der Festplatte, was รผblicherweise die Ursache fรผr langsame Berichtsabfragen ist.

ASC ist die Kurzform fรผr aufsteigend
MySQL DESC ist die Kurzform fรผr absteigend

