PostgreSQL ORDER BY
Zusammenfassung: In diesem Tutorial lernen Sie, wie Sie die Ergebnismenge, die von der SELECTAnweisung zurückgegeben wird, mit Hilfe der PostgreSQL ORDER BY Klausel sortieren können.
Einführung in die PostgreSQL ORDER BY Klausel
Wenn Sie Daten aus einer Tabelle abfragen, gibt die SELECT-Anweisung Zeilen in einer nicht spezifizierten Reihenfolge zurück. Um die Zeilen der Ergebnismenge zu sortieren, verwenden Sie die ORDER BY-Klausel in der SELECT-Anweisung.
Mit der ORDER BY-Klausel können Sie Zeilen, die von einer SELECT-Klausel zurückgegeben werden, in aufsteigender oder absteigender Reihenfolge basierend auf einem Sortierausdruck sortieren.
Das Folgende illustriert die Syntax der ORDER BY-Klausel:
Code language: SQL (Structured Query Language) (sql)SELECTselect_listFROMtable_nameORDER BYsort_expression1 , ...sort_expressionN ;
In dieser Syntax:
- Zuerst geben Sie einen Sortierausdruck an, der eine Spalte oder ein Ausdruck sein kann, den Sie nach den
ORDER BY-Schlüsselwörtern sortieren möchten. Wenn Sie die Ergebnismenge nach mehreren Spalten oder Ausdrücken sortieren möchten, müssen Sie ein Komma (,) zwischen zwei Spalten oder Ausdrücke setzen, um sie zu trennen. - Zweitens verwenden Sie die Option
ASC, um Zeilen in aufsteigender Reihenfolge zu sortieren und die OptionDESC, um Zeilen in absteigender Reihenfolge zu sortieren. Wenn Sie die OptionASCoderDESCweglassen, verwendet dasORDER BYstandardmäßigASC.
PostgreSQL wertet die Klauseln in der SELECT-Anweisung in der folgenden Reihenfolge aus: FROMSELECT, und ORDER BY:

Durch die Reihenfolge der Auswertung, wenn Sie einen Spaltenalias in der SELECT-Klausel haben, können Sie ihn in der ORDER BY-Klausel verwenden.
Lassen Sie uns einige Beispiele für die Verwendung der PostgreSQL ORDER BY-Klausel ansehen.
PostgreSQL ORDER BY Beispiele
Zur Demonstration verwenden wir die customer-Tabelle in der Beispieldatenbank.

1) Verwendung der PostgreSQL ORDER BY Klausel zum Sortieren Zeilen nach einer Spalte
Die folgende Abfrage verwendet die ORDER BY-Klausel, um Kunden nach ihren Vornamen in aufsteigender Reihenfolge zu sortieren:
Code language: SQL (Structured Query Language) (sql)SELECTfirst_name,last_nameFROMcustomerORDER BYfirst_name ASC;

Da die ASC-Option der Standard ist, können Sie sie in der ORDER BY-Klausel wie folgt weglassen:
Code language: SQL (Structured Query Language) (sql)SELECTfirst_name,last_nameFROMcustomerORDER BYfirst_name;
2) PostgreSQL-Klausel ORDER BY verwenden, um Zeilen nach einer Spalte in absteigender Reihenfolge zu sortieren
Die folgende Anweisung wählt den Vornamen und den Nachnamen aus der Tabelle customer aus und sortiert die Zeilen nach den Werten in der Spalte Nachname in absteigender Reihenfolge:
Code language: SQL (Structured Query Language) (sql)SELECT first_name, last_nameFROM customerORDER BY last_name DESC;

3) Verwendung der PostgreSQL ORDER BY Klausel zum Sortieren Zeilen nach mehreren Spalten
Die folgende Anweisung wählt den Vornamen und den Nachnamen aus der Kundentabelle aus und sortiert die Zeilen nach dem Vornamen in aufsteigender Reihenfolge und dem Nachnamen in absteigender Reihenfolge:
Code language: SQL (Structured Query Language) (sql)SELECTfirst_name,last_nameFROMcustomerORDER BYfirst_name ASC,last_name DESC;

In diesem Beispiel sortiert die ORDER BY-Klausel die Zeilen zuerst nach den Werten der Spalte Vorname. Und dann sortiert sie die sortierten Zeilen nach Werten in der Nachnamensspalte.
Wie Sie in der Ausgabe deutlich sehen können, sind zwei Kunden mit demselben Vornamen Kelly dem Nachnamen absteigend sortiert.
4) PostgreSQL ORDER BY-Klausel verwenden, um Zeilen nach Ausdrücken zu sortieren
Die Funktion LENGTH() akzeptiert eine Zeichenkette und gibt die Länge dieser Zeichenkette zurück.
Die folgende Anweisung wählt die Vornamen und ihre Längen aus. Sie sortiert die Zeilen nach den Längen der Vornamen:
Code language: SQL (Structured Query Language) (sql)SELECT first_name,LENGTH(first_name) lenFROMcustomerORDER BY len DESC;

Da die ORDER BY Klausel nach der SELECT Klausel ausgewertet wird, ist der Spaltenalias len verfügbar und kann in der ORDER BY-Klausel verwendet werden.
PostgreSQL ORDER BY-Klausel und NULL
In der Datenbankwelt ist NULL eine Markierung, die auf fehlende Daten hinweist oder die Daten sind zum Zeitpunkt der Aufnahme unbekannt.
Wenn Sie Zeilen sortieren, die NULL enthalten, können Sie die Reihenfolge von NULL mit anderen Nicht-Null-Werten festlegen, indem Sie die Option NULLS FIRST oder NULLS LAST der Klausel ORDER BY verwenden:
Code language: CSS (css)ORDER BY sort_expresssion
Die NULLS FIRST-Option platziert NULL vor anderen NichtNull-Werten und die Option NULL LAST platziert NULL nach anderen Nicht-Null-Werten.
Lassen Sie uns eine Tabelle für die Demonstration erstellen.
Code language: SQL (Structured Query Language) (sql)-- create a new tableCREATE TABLE sort_demo(num INT);-- insert some dataINSERT INTO sort_demo(num)VALUES(1),(2),(3),(null);
Beachten Sie, dass Sie die Anweisungen CREATE TABLE und INSERT nicht verstehen müssen. Sie müssen sie nur von pgAdmin oder psql aus ausführen, um die sort_demo-Tabelle zu erstellen und Daten in sie einzufügen.
Die folgende Abfrage gibt Daten aus der Tabelle sort_demo zurück:
Code language: SQL (Structured Query Language) (sql)SELECT numFROM sort_demoORDER BY num;

In diesem Beispiel, sortiert die ORDER BY-Klausel die Werte in der num-Spalte der sort_demo-Tabelle in aufsteigender Reihenfolge. Es platziert NULL nach anderen Werten.
Wenn Sie also die Option ASC verwenden, verwendet die ORDER BY-Klausel standardmäßig die Option NULLS LAST. Daher liefert die folgende Abfrage das gleiche Ergebnis:
Code language: SQL (Structured Query Language) (sql)SELECT numFROM sort_demoORDER BY num NULLS LAST;
Um NULL vor andere Nicht-Null-Werte zu setzen, verwenden Sie die Option NULLS FIRST:
Code language: SQL (Structured Query Language) (sql)SELECT numFROM sort_demoORDER BY num NULLS FIRST;

Die folgende Anweisung sortiert Werte in der num Spalte der sort_demo Tabelle in absteigender Reihenfolge:
Code language: SQL (Structured Query Language) (sql)SELECT numFROM sort_demoORDER BY num DESC;

Wie Sie an der Ausgabe deutlich sehen können, verwendet die ORDER BY-Klausel mit der Option DESC standardmäßig das NULLS FIRST.
Um die Reihenfolge umzukehren, können Sie die Option NULLS LAST verwenden:
Code language: SQL (Structured Query Language) (sql)SELECT numFROM sort_demoORDER BY num DESC NULLS LAST;

Zusammenfassung
- Verwenden Sie die
ORDER BY-Klausel in derSELECT-Anweisung, um Zeilen zu sortieren. - Verwenden Sie die
ASC-Klausel, um Zeilen in aufsteigender Reihenfolge zu sortieren und dieDESC-Klausel, um Zeilen in absteigender Reihenfolge zu sortieren. DieORDER BY-Klausel verwendet standardmäßig dieASC-Option. - Verwenden Sie die Optionen
NULLS FIRSTundNULLS LAST, um die Reihenfolge vonNULLmit anderen Nicht-Null-Werten explizit anzugeben.
- War dieses Tutorial hilfreich?
- JaNein