PostgreSQL ORDER BY
Zusammenfassung: In diesem Tutorial lernen Sie, wie Sie die Ergebnismenge, die von der SELECT
Anweisung 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 OptionASC
oderDESC
weglassen, verwendet dasORDER BY
standardmäßigASC
.
PostgreSQL wertet die Klauseln in der SELECT
-Anweisung in der folgenden Reihenfolge aus: FROM
SELECT
, 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 FIRST
undNULLS LAST
, um die Reihenfolge vonNULL
mit anderen Nicht-Null-Werten explizit anzugeben.
- War dieses Tutorial hilfreich?
- JaNein