Zurück zur Artikelliste Artikel
6 Leseminuten

Was bewirkt ORDER BY?

Bei der Analyse von Daten ist es oft hilfreich, die Zeilen auf eine bestimmte Weise zu sortieren. In diesem Artikel zeige ich anhand mehrerer Beispiele, wie SQL ORDER BY Daten nach einer oder mehreren Spalten in aufsteigender oder absteigender Reihenfolge sortiert.

Einführung in ORDER BY

Standardmäßig ist die Reihenfolge der Zeilen in der Ausgabe einer SQL-Abfrage willkürlich. Wenn Sie die Ausgabe in einer bestimmten Reihenfolge sortieren möchten, müssen Sie das Schlüsselwort ORDER BY verwenden. Die Zeilen werden nach einer oder mehreren Spalten sortiert, die in der ORDER BY Klausel angegeben sind. Wenn Sie nichts anderes angeben, sortiert ORDER BY die Daten in aufsteigender Reihenfolge.

Schauen wir uns ein Beispiel an, um die Syntax von ORDER BY zu verstehen. Wir haben die folgende Tabelle mit grundlegenden Informationen über mehrere berühmte Filme.

movies
id title director production_year
1 Psycho Alfred Hitchcock 1960
2 Midnight in Paris Woody Allen 2011
3 Sweet and Lowdown Woody Allen 1993
4 Talk to Her Pedro Almodóvar 2002
5 The Skin I Live in Pedro Almodóvar 2011

Unsere erste Aufgabe besteht darin, diese Zeilen nach dem Produktionsjahr zu sortieren, beginnend mit dem frühesten Film. Bei numerischen Daten bedeutet aufsteigende Reihenfolge, dass von der kleinsten Zahl zur größten sortiert wird, und absteigende Reihenfolge bedeutet, dass von der größten Zahl zur kleinsten sortiert wird. Da wir wollen, dass der älteste Film an erster Stelle steht, müssen wir die Ausgabe in aufsteigender Reihenfolge sortieren. Dies ist die Standardreihenfolge bei der Verwendung von ORDER BY, aber wir können die Reihenfolge auch mit dem Schlüsselwort ASC festlegen.

Wie funktioniert SQL ORDE BY?

So sortiert SQL ORDER BY die Tabelle movie Tabelle nach Produktionsjahr in aufsteigender Reihenfolge:

Um die Ausgabe mit ORDER BY zu sortieren, müssen Sie nur:

  • Setzen Sie das Schlüsselwort ORDER BY an das Ende der Abfrage.
  • Anschließend geben Sie den Namen der Spalte an, nach der Sie sortieren möchten.
  • Geben Sie das Schlüsselwort ASC oder DESC für aufsteigende bzw. absteigende Reihenfolge an. Dies ist optional.

Im obigen Beispiel haben wir das Ergebnis nach dem Produktionsjahr sortiert, beginnend mit dem frühesten Film. Können Sie nun eine SQL-Abfrage schreiben, um die Ausgabe nach dem Produktionsjahr zu sortieren, aber beginnend mit dem neuesten Film?

Die Antwort zeige ich weiter unten, aber jetzt können Sie sich selbst testen und eine SQL-Abfrage schreiben, um die folgende Ausgabe zu erhalten:

idtitledirectorproduction_year
2Midnight in ParisWoody Allen2011
5The Skin I Live inPedro Almodóvar2011
4Talk to HerPedro Almodóvar2002
3Sweet and LowdownWoody Allen1993
1PsychoAlfred Hitchcock1960

Und hier ist die Abfrage:

SELECT *
FROM movies
ORDER BY production_year DESC;

Wir haben einfach das Schlüsselwort ASC durch das Schlüsselwort DESC ersetzt, um die Reihenfolge von aufsteigend zu absteigend zu ändern. Ziemlich einfach, oder?

Um praktische Erfahrungen mit ORDER BY zu sammeln, besuchen Sie unseren interaktiven SQL für Anfänger Kurs.

Sehen wir uns nun weitere Beispiele für die Verwendung von ORDER BY in verschiedenen Szenarien an.

ORDER By mit Textdaten

Ordnen wir die movies Tabelle nach dem Filmtitel in umgekehrter alphabetischer Reihenfolge. Bei Textdaten bedeutet aufsteigende Reihenfolge, dass in alphabetischer Reihenfolge (A-Z) sortiert wird, und absteigende Reihenfolge bedeutet, dass in umgekehrter alphabetischer Reihenfolge (Z-A) sortiert wird. Unsere SQL-Abfrage lautet also wie folgt:

SELECT *
FROM movies
ORDER BY title DESC;
idtitledirectorproduction_year
2Midnight in ParisWoody Allen2011
5The Skin I Live inPedro Almodóvar2011
4Talk to HerPedro Almodóvar2002
3Sweet and LowdownWoody Allen1993
1PsychoAlfred Hitchcock1960

Wir haben in unserem Beispiel keine NULL-Werte, aber Sie können in diesem Artikel lernen, wie ORDER BY mit NULLs funktioniert.

ORDER BY Mehrere Spalten

Es kann vorkommen, dass Sie die Ausgabe einer Abfrage nach mehreren Spalten sortieren müssen. Dies ist sinnvoll, wenn die erste Spalte mehrere Zeilen mit denselben Werten enthält. Schauen wir uns an, wie das funktioniert.

In unserem nächsten Beispiel möchten wir die Filme (1) nach dem Namen des Regisseurs (in alphabetischer Reihenfolge) und (2) nach dem Produktionsjahr (beginnend mit dem neuesten Film) sortieren. In Anbetracht der Art und Weise, wie ORDER BY mit den numerischen und Textdaten arbeitet, sortieren wir die Ergebnismenge nach der Spalte director in aufsteigender Reihenfolge und dann nach production_year in absteigender Reihenfolge:

SELECT *
FROM movies
ORDER BY director ASC, production_year DESC;
idtitledirectorproduction_year
1PsychoAlfred Hitchcock1960
5The Skin I Live inPedro Almodóvar2011
4Talk to HerPedro Almodóvar2002
2Midnight in ParisWoody Allen2011
3Sweet and LowdownWoody Allen1993

Wie erwartet, beginnt die Ergebnismenge mit einem Film von Alfred Hitchcock, dessen Name in alphabetischer Reihenfolge an erster Stelle steht. Dann folgen zwei Filme von Pedro Almodóvar, dessen Name in alphabetischer Reihenfolge an zweiter Stelle steht. Die Filme von Pedro Almodóvar sind dann nach dem Produktionsjahr sortiert, wobei der Film aus dem Jahr 2011 an erster und der Film aus dem Jahr 2002 an zweiter Stelle steht. Die Tabelle endet mit den Filmen von Woody Allen, ebenfalls sortiert vom neuesten bis zum ältesten. Das ist die Reihenfolge, nach der wir gesucht haben.

ORDER BY in komplexen SQL-Abfragen

Wenn Sie eine SQL-Abfrage mit mehreren Klauseln haben, die Daten verbinden, gruppieren und filtern, ist es wichtig, die ORDER BY-Klausel ganz ans Ende der Abfrage zu setzen.

Nehmen wir zum Beispiel an, dass wir die Namen von Regisseuren mit mehr als einem Film in alphabetischer Reihenfolge abfragen möchten. Hier ist die zu verwendende Abfrage:

SELECT director, count(title) AS number_of_movies
FROM movies
GROUP BY director
HAVING count(title) > 1
ORDER BY director;

In dieser Abfrage gruppieren wir zunächst die Daten, filtern dann die Gruppen nach unserer Bedingung ( > 1 Film) und sortieren schließlich die Ergebnismenge nach der Spalte director (standardmäßig in aufsteigender Reihenfolge).

Hier ist das gesuchte Ergebnis:

directornumber_of_movies
Pedro Almodóvar2
Woody Allen2

Zusammenfassung von SQL ORDER BY

Die folgenden Regeln fassen die wichtigsten Konzepte für die Verwendung von ORDER BY zusammen:

  • ORDER BY ORDER BY wird immer an das Ende der Abfrage gesetzt. Klauseln wie FROM, WHERE, GROUP BY, HAVING, usw. sollten vor dem Schlüsselwort ORDER BY stehen.
  • Um die Ausgabe in aufsteigender Reihenfolge zu sortieren, können Sie das Schlüsselwort ASC hinter den Spaltennamen setzen. Dies ist jedoch optional, da standardmäßig in aufsteigender Reihenfolge sortiert wird.
  • Um die Ausgabe inabsteigender Reihenfolge zu sortieren, setzen Sie das Schlüsselwort DESC hinter den Spaltennamen.
  • Um die Ausgabe nach mehreren Spalten zu sortieren, geben Sie einfach die Spaltennamen im Feld ORDER BY Die Ergebnismenge wird nach der ersten Spalte sortiert; wenn es mehrere Zeilen mit demselben Wert in der ersten Spalte gibt, werden die Zeilen nach der zweiten Spalte sortiert usw.
  • Wenn Sie nach mehreren Spalten sortieren, können Sie die SchlüsselwörterASC und DESC hinter jeden der Spaltennamensetzen . Mit anderen Worten, Sie können innerhalb derselben Abfrage einige Spalten in aufsteigender Reihenfolge und einige Spalten in absteigender Reihenfolge sortieren.

Dies sind die Grundregeln für die Verwendung der ORDER BY Klausel. Wenn Sie mehr über fortgeschrittene Verwendungen erfahren möchten, wie z. B. das Einfügen von Ausdrücken in ORDER BY, lesen Sie diesen umfassenden Leitfaden.

Zeit, SQL ORDER BY zu üben!

Sie haben gelernt, wie SQL ORDER BY funktioniert; jetzt ist es an der Zeit, Ihr neues Wissen in die Praxis umzusetzen. Ich empfehle Ihnen, mit dem Kurs LearnSQL.de SQL für Anfänger zu beginnen, der alle grundlegenden SQL-Konzepte abdeckt und eine Reihe von interaktiven Übungen zum Sortieren von Zeilen mit ORDER BY enthält.

Weitere Übungen finden Sie in unserem SQL-Übungssatz. Dieser Kurs testet die grundlegenden SQL-Kenntnisse mit mehreren Übungen zur Datenaggregation, Gruppierung, Filterung und natürlich zur Sortierung.

SQL zu lernen sollte nicht schwierig sein. Lernen Sie mit Spaß!