Mit SQL ORDER BY ordnen Sie Ihre Such­ergeb­nis­se bei Da­ten­ab­fra­gen nach in­di­vi­du­el­len An­for­de­run­gen in auf- oder ab­stei­gen­der Rei­hen­fol­ge. Indem Sie Daten in Ihrer Ziel­ta­bel­le in Zeilen und Spalten sortieren, ver­bes­sern Sie die Übersicht und Les­bar­keit. Auf diese Weise op­ti­mie­ren und be­schleu­ni­gen Sie Da­ten­ana­ly­sen und Abfragen aus komplexen Da­ten­sät­zen.

Was ist der SQL ORDER BY-Befehl?

Wenn Sie Daten und Er­geb­nis­se aus einfachen oder komplexen Da­ten­sät­zen in der Ziel­ta­bel­le sortieren möchten, nutzen Sie in SQL den Befehl ORDER BY. Mit dem Kommando können Sie für Ihre Zieldaten eine ge­wünsch­te auf- oder ab­stei­gen­de Rei­hen­fol­ge in der Da­ten­ab­fra­ge festlegen. Durch ORDER BY erhalten Sie somit über­sicht­lich und leicht lesbar sortierte Ab­fra­ge­er­geb­nis­se. Stan­dard­mä­ßig sortiert der Befehl die Ab­fra­ge­da­ten in auf­stei­gen­der Rei­hen­fol­ge, also von A nach Z oder vom kleinsten bis zum größten Wert. Be­vor­zu­gen Sie eine andere Rei­hen­fol­ge, geben Sie jeweils das optionale Schlüs­sel­wort ASC (Ascend) für auf­stei­gend oder DESC (Descend) für ab­stei­gend an.

Sie können wahlweise nur eine oder auch mehrere Spalten für die Aus­ga­be­er­geb­nis­se de­fi­nie­ren. Aufgrund der über­sicht­li­chen Prä­sen­ta­ti­on spielt ORDER BY eine wichtige Rolle für geordnete, schnelle Da­ten­ab­fra­gen. Besonders häufig kommt der Befehl in Ver­bin­dung mit SQL SELECT, SQL WHERE sowie je nach Fall mit weiteren SQL-Ope­ra­to­ren oder Funk­tio­nen wie SQL GROUP BY zum Einsatz.

Tipp

Sie wollen SQL besser verstehen, verfügen jedoch über geringe Vor­kennt­nis­se? Unsere SQL-Ein­füh­rung mit Bei­spie­len er­leich­tert Ihnen den Einstieg in die gefragte Da­ten­bank­spra­che.

Die Syntax von SQL ORDER BY erklärt

Die ORDER BY-Syntax sieht wie folgt aus:

SELECT  SpalteA, SpalteB, …  oder *
FROM  Tabelle
ORDER BY  SpalteA, SpalteB, …  (optional: ASC oder DESC)
sql
Hinweis

Wenn Sie nach ORDER BY nur eine Spalte angeben, erhalten Sie eine Spalte mit sor­tier­ten Er­geb­nis­sen. Geben Sie mehrere Spalten an, dann sortiert die Klausel zunächst alle Er­geb­nis­se gemäß Spalte A. Bei iden­ti­schen Einträgen in ver­schie­de­nen Zeilen ordnet die Klausel die Einträge gemäß Spalte B.

Sie können die SQL ORDER BY-Syntax um ge­wünsch­te Ope­ra­to­ren oder Parameter erweitern. Mit einer WHERE-Klausel de­fi­nie­ren Sie zum Beispiel zu­sätz­li­che Be­din­gun­gen, um die Ab­fra­ge­er­geb­nis­se ein­zu­gren­zen. Die Syntax in Kom­bi­na­ti­on mit WHERE sieht wie folgt aus:

SELECT  SpalteA, SpalteB, …  oder *
FROM  Tabelle
WHERE  SpalteA  =  'Suchbedingung'
ORDER BY  SpalteA, SpalteB, …  (optional: ASC oder DESC)
sql

Diese Parameter können zum Einsatz kommen:

  • SELECT: Mit SQL SELECT legen Sie fest, welche Daten Sie ana­ly­sie­ren möchten. Geben Sie einen Asterisk * an, wenn die Abfrage für den ganzen Datensatz gilt oder geben Sie Spal­ten­na­men an, wenn Sie aus­ge­wähl­te Spalten un­ter­su­chen möchten.
  • FROM: Legt fest, aus welcher Tabelle Sie Daten abfragen.
  • WHERE: Mit der op­tio­na­len Klausel SQL WHERE de­fi­nie­ren Sie eine spe­zi­fi­sche Such­be­din­gung, nach der Sie Er­geb­nis­se sortieren. Hier können zu­sätz­li­che Ver­gleichs­ope­ra­to­ren wie = oder Ope­ra­to­ren wie SQL LIKE oder SQL NOT zum Einsatz kommen.
  • ORDER BY: Legt fest, nach welchem Wert Sie Er­geb­nis­se sortieren. Wenn Sie weder ASC noch DESC hin­zu­fü­gen, erfolgt die Rei­hen­fol­ge au­to­ma­tisch al­pha­be­tisch oder numerisch ab­stei­gend.
Hinweis

NULL-Werte ordnet die Klausel ORDER BY je nach Datenbank au­to­ma­tisch oder nach gewählter Sor­tier­rei­hen­fol­ge. In SQLite, MySQL und SQL Server behandelt der Befehl NULL-Werte als nied­rigs­te Werte – bei auf­stei­gen­der Rei­hen­fol­ge stehen sie also am Anfang. In Oracle und Post­greS­QL gelten NULL-Werte als höchste Werte – bei auf­stei­gen­der Rei­hen­fol­ge stehen sie also ganz am Ende.

Für diese An­wen­dungs­mög­lich­kei­ten eignet sich ORDER BY

Einige prak­ti­sche An­wen­dungs­fäl­le für SQL ORDER BY umfassen:

  • Pro­dukt­in­for­ma­tio­nen nach Pro­dukt­be­zeich­nung, Kategorie oder Preis sortieren
  • Trans­ak­tio­nen nach Betrag, Datum oder Namen sortieren
  • Be­stel­lun­gen nach Anzahl oder Be­wer­tun­gen ordnen
  • Mit­ar­bei­te­rin­nen und Mit­ar­bei­ter nach Gehalt, Aufträgen, Per­for­mance oder Abteilung sortieren
  • La­ger­be­stand nach Anzahl oder Namen auflisten
  • Lie­fe­run­gen nach Post­leit­zahl oder Tracking-Nummer ordnen
  • Kun­den­lis­ten nach Region oder Alter sortieren

Prak­ti­sche Beispiele für SQL ORDER BY

Um die Funk­ti­ons­wei­se von ORDER BY zu ver­an­schau­li­chen, finden Sie im Folgenden drei prak­ti­sche An­wen­dungs­bei­spie­le.

Produkte nach Preis sortieren

Um in einer Tabelle „Produkte“ die Produkte der Kategorie „Beauty“ nach Preis auf­stei­gend zu sortieren, bestimmen Sie mit FROM, welche Kategorie sie sortieren möchten. Mit ORDER BY und ASC bestimmen Sie, dass Sie nach „Preis“ auf­stei­gend sortieren möchten. Gehen Sie wie folgt vor:

SELECT  *
FROM  Produkte
WHERE  Kategorie  = 'Beauty'
ORDER BY  Preis  ASC;
sql

Filtern von Kun­den­grup­pen

In einer Tabelle „Kunden“ möchten Sie mit der Sor­tier­be­din­gung „Land“ alle Kundinnen und Kunden aus Deutsch­land al­pha­be­tisch nach Namen sortieren. Um auf­stei­gend von A bis Z zu ordnen, müssen Sie keinen Zusatz ASC hin­zu­fü­gen. Möchten Sie von Z bis A sortieren, fügen Sie DESC zum SQL ORDER BY-Befehl hinzu:

SELECT  *
FROM  Kunden
WHERE  Land = 'Deutschland'
ORDER BY  Name  DESC;
sql

Sortieren mit mehreren Be­din­gun­gen

Sie möchten in einer Tabelle „Produkte“ Einträge aus der Kategorie „Elek­tro­nik“ nach Be­stell­men­ge al­pha­be­tisch auf­stei­gend sortieren. Bei iden­ti­scher Be­stell­men­ge wollen Sie Be­stel­lun­gen nach Region sortieren. Die Syntax sieht wie folgt aus:

SELECT  *
FROM  Produkte
WHERE  Kategorie  =  'Elektronik'
ORDER BY  Bestellmenge ASC,  Region  DESC;
sql

Al­ter­na­ti­ven zu SQL ORDER BY

Eine Al­ter­na­ti­ve mit derselben Funktion wie ORDER BY gibt es im Grunde nicht. Zu den SQL-Befehlen, die jedoch häufig in Kom­bi­na­ti­on mit SQL ORDER BY zum Einsatz kommen, zählt SQL GROUP BY. Während Sie mit GROUP BY Da­ten­sät­ze aus Spalten bei­spiels­wei­se nach Kategorie grup­pie­ren, können Sie diese mit ORDER BY zu­sätz­lich ordnen.

Ein Beispiel: Sie möchten den Be­stell­wert von Kundinnen und Kunden nach Land grup­pie­ren und an­schlie­ßend mit der Ag­gre­gat­funk­ti­on SQL AVG nach durch­schnitt­li­cher Be­stell­men­ge auf­stei­gend sortieren. Die Syntax sieht wie folgt aus:

SELECT  Land, AVG(Bestellmenge)
FROM  Kunden
WHERE  Kategorie = 'Elektronik'
GROUP BY  Land
ORDER BY  AVG(Bestellmenge) ASC;
sql

Mit der Klausel SQL HAVING können Sie die sor­tier­ten Da­ten­sät­ze zu­sätz­lich nach de­fi­nier­ten Such­kri­te­ri­en und Be­din­gun­gen filtern. Mit LIMIT können Sie zudem die Er­geb­nis­men­ge auf eine ge­wünsch­te Anzahl be­schrän­ken.

Zum Hauptmenü