Articles

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:

SELECTselect_listFROMtable_nameORDER BYsort_expression1 , ...sort_expressionN ;
Code language: SQL (Structured Query Language) (sql)

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 Option DESC, um Zeilen in absteigender Reihenfolge zu sortieren. Wenn Sie die Option ASC oder DESC weglassen, verwendet das ORDER BY standardmäßig ASC.

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.

Kundentabelle

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:

SELECTfirst_name,last_nameFROMcustomerORDER BYfirst_name ASC;
Code language: SQL (Structured Query Language) (sql)
PostgreSQL ORDER BY one column example

Da die ASC-Option der Standard ist, können Sie sie in der ORDER BY-Klausel wie folgt weglassen:

SELECTfirst_name,last_nameFROMcustomerORDER BYfirst_name;
Code language: SQL (Structured Query Language) (sql)

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:

SELECT first_name, last_nameFROM customerORDER BY last_name DESC;
Code language: SQL (Structured Query Language) (sql)
PostgreSQL ORDER BY einer Spalte DESC Beispiel

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:

SELECTfirst_name,last_nameFROMcustomerORDER BYfirst_name ASC,last_name DESC;
Code language: SQL (Structured Query Language) (sql)
PostgreSQL ORDER BY multiple columns

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:

SELECT first_name,LENGTH(first_name) lenFROMcustomerORDER BY len DESC;
Code language: SQL (Structured Query Language) (sql)
PostgreSQL ORDER BY expressions

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:

ORDER BY sort_expresssion
Code language: CSS (css)

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.

-- create a new tableCREATE TABLE sort_demo(num INT);-- insert some dataINSERT INTO sort_demo(num)VALUES(1),(2),(3),(null);
Code language: SQL (Structured Query Language) (sql)

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:

SELECT numFROM sort_demoORDER BY num;
Code language: SQL (Structured Query Language) (sql)

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:

SELECT numFROM sort_demoORDER BY num NULLS LAST;
Code language: SQL (Structured Query Language) (sql)

Um NULL vor andere Nicht-Null-Werte zu setzen, verwenden Sie die Option NULLS FIRST:

SELECT numFROM sort_demoORDER BY num NULLS FIRST;
Code language: SQL (Structured Query Language) (sql)

Die folgende Anweisung sortiert Werte in der num Spalte der sort_demo Tabelle in absteigender Reihenfolge:

SELECT numFROM sort_demoORDER BY num DESC;
Code language: SQL (Structured Query Language) (sql)

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:

SELECT numFROM sort_demoORDER BY num DESC NULLS LAST;
Code language: SQL (Structured Query Language) (sql)

Zusammenfassung

  • Verwenden Sie die ORDER BY-Klausel in der SELECT-Anweisung, um Zeilen zu sortieren.
  • Verwenden Sie die ASC-Klausel, um Zeilen in aufsteigender Reihenfolge zu sortieren und die DESC-Klausel, um Zeilen in absteigender Reihenfolge zu sortieren. Die ORDER BY-Klausel verwendet standardmäßig die ASC-Option.
  • Verwenden Sie die Optionen NULLS FIRST und NULLS LAST, um die Reihenfolge von NULL mit anderen Nicht-Null-Werten explizit anzugeben.
  • War dieses Tutorial hilfreich?
  • JaNein

Schreibe einen Kommentar

Deine E-Mail-Adresse wird nicht veröffentlicht. Erforderliche Felder sind mit * markiert.