
Sortierung, der ORDER BY-Operator
Bei einer SELECT-Query werden Zeilen standardmäßig in einer nicht festgelegten Reihenfolge zurückgegeben. Die tatsächliche Reihenfolge hängt vom Join- und Scan-Plan sowie von der Anordnung der Daten auf der Festplatte ab — verlassen darfst du dich darauf also nicht. Für die geordnete Ausgabe nutzt du die Konstruktion ORDER BY.
Allgemeine Struktur einer Query mit ORDER BY
MySQL 8.1SELECT tabellen_felder FROM tabellen_name WHERE ... ORDER BY spalte_1 [ASC | DESC][, spalte_n [ASC | DESC]]
Dabei steht ASC bzw. DESC für die Sortierrichtung:
- ASC — aufsteigend (Standard)
- DESC — absteigend
Holen wir uns zum Beispiel die Namen der Airlines aus der Tabelle Company in alphabetischer Reihenfolge:
MySQL 8.1SELECT name FROM Company ORDER BY name;
Auf- und absteigende Sortierung für die wichtigsten Datentypen
Sortierung nach mehreren Spalten
Um nach zwei oder mehr Spalten zu sortieren, listest du sie durch Kommas getrennt auf.
MySQL 8.1...ORDER BY spalte_1 [ASC | DESC], spalte_2 [ASC | DESC];
Die Daten werden nach der ersten Spalte sortiert. Treffen mehrere Zeilen mit demselben Wert in der ersten Spalte aufeinander, werden sie nach der zweiten Spalte sortiert. Die Anzahl der Spalten, nach denen du sortieren kannst, ist nicht begrenzt.
Die Sortierrichtung gilt nur für die unmittelbar davor stehende Spalte.
ORDER BY spalte_1, spalte_2 DESC
ist nicht dasselbe wie
ORDER BY spalte_1 DESC, spalte_2 DESC
Holen wir die Flugdaten aus der Tabelle Trip, sortiert nach Abflugstadt aufsteigend und nach Ankunftsstadt absteigend:
MySQL 8.1SELECT DISTINCT town_from, town_to FROM Trip ORDER BY town_from, town_to DESC;
In diesem Beispiel werden die Einträge zuerst nach dem Feld town_from sortiert. Anschließend wird innerhalb der Gruppen mit gleichem town_from die absteigende Sortierung nach town_to angewendet.