Zusammenfassung :In diesem Tutorial erfahren Sie, wie Sie eine Ergebnismenge einer Abfrage mit SQLite ORDER BY
sortieren Klausel.
Einführung in SQLite ORDER BY
Klausel
SQLite speichert Daten in den Tabellen in einer nicht festgelegten Reihenfolge. Das bedeutet, dass die Zeilen in der Tabelle in der Reihenfolge, in der sie eingefügt wurden, sein können oder nicht.
Wenn Sie die SELECT
verwenden -Anweisung Daten aus einer Tabelle abzufragen, ist die Reihenfolge der Zeilen in der Ergebnismenge nicht festgelegt.
Um die Ergebnismenge zu sortieren, fügen Sie den ORDER BY
hinzu -Klausel zu SELECT
Anweisung wie folgt:
SELECT
select_list
FROM
table
ORDER BY
column_1 ASC,
column_2 DESC;
Code language: SQL (Structured Query Language) (sql)
Der ORDER BY
-Klausel kommt nach FROM
Klausel. Sie können die Ergebnismenge basierend auf einer oder mehreren Spalten in aufsteigender oder absteigender Reihenfolge sortieren.
In dieser Syntax platzieren Sie den Spaltennamen, nach dem Sie sortieren möchten, nach dem ORDER BY
-Klausel, gefolgt von ASC
oder DESC
Schlüsselwort.
- Der
ASC
Schlüsselwort bedeutet aufsteigend. - Und der
DESC
Schlüsselwort bedeutet absteigend.
Wenn Sie ASC
nicht angeben oder DESC
Schlüsselwort sortiert SQLite die Ergebnismenge mit dem ASC
Möglichkeit. Mit anderen Worten, es sortiert die Ergebnismenge standardmäßig in aufsteigender Reihenfolge.
Falls Sie die Ergebnismenge nach mehreren Spalten sortieren möchten, verwenden Sie ein Komma (,), um zwei Spalten zu trennen. Der ORDER BY
-Klausel sortiert Zeilen mithilfe von Spalten oder Ausdrücken von links nach rechts. Mit anderen Worten, der ORDER BY
-Klausel sortiert die Zeilen anhand der ersten Spalte in der Liste. Dann sortiert es die sortierten Zeilen anhand der zweiten Spalte und so weiter.
Sie können die Ergebnismenge anhand einer Spalte sortieren, die nicht in der Auswahlliste von SELECT
erscheint Klausel.
SQLite ORDER BY
Klauselbeispiel
Nehmen wir die tracks
Tabelle in der Beispieldatenbank für die Demonstration.
Angenommen, Sie möchten Daten aus den Spalten Name, Millisekunden und Album-ID abrufen, verwenden Sie die folgende Anweisung:
SELECT
name,
milliseconds,
albumid
FROM
tracks;
Code language: SQL (Structured Query Language) (sql)
Probieren Sie es aus
Die SELECT
Anweisung, die ORDER BY
nicht verwendet -Klausel gibt eine Ergebnismenge zurück, die in keiner Reihenfolge vorliegt.
Angenommen, Sie möchten die Ergebnismenge basierend auf AlbumId
sortieren Spalte in aufsteigender Reihenfolge, verwenden Sie die folgende Anweisung:
SELECT
name,
milliseconds,
albumid
FROM
tracks
ORDER BY
albumid ASC;
Code language: SQL (Structured Query Language) (sql)
Probieren Sie es aus
Die Ergebnismenge ist nun nach der AlbumId
sortiert Spalte in aufsteigender Reihenfolge, wie im Screenshot gezeigt.
SQLite verwendet ASC
standardmäßig, sodass Sie es in der obigen Anweisung wie folgt weglassen können:
SELECT
name,
milliseconds,
albumid
FROM
tracks
ORDER BY
albumid;
Probieren Sie es aus
Angenommen, Sie möchten das sortierte Ergebnis sortieren (nach AlbumId
) oben um die Milliseconds
Spalte in absteigender Reihenfolge. In diesem Fall müssen Sie die Milliseconds
hinzufügen in die Spalte ORDER BY
Klausel wie folgt:
SELECT
name,
milliseconds,
albumid
FROM
tracks
ORDER BY
albumid ASC,
milliseconds DESC;
Code language: SQL (Structured Query Language) (sql)
Probieren Sie es aus
SQLite sortiert Zeilen nach AlbumId
Spalte in aufsteigender Reihenfolge zuerst. Dann sortiert es die sortierte Ergebnismenge nach Milliseconds
Spalte in absteigender Reihenfolge.
Wenn Sie sich die Tracks des Albums mit AlbumId
ansehen 1 finden Sie, dass sich die Reihenfolge der Tracks zwischen den beiden Anweisungen ändert.
SQLite ORDER BY
mit der Spaltenposition
Anstatt die Spaltennamen anzugeben, können Sie die Position der Spalte im ORDER BY
verwenden Klausel.
Beispielsweise sortiert die folgende Anweisung die Tracks sowohl nach albumid
(3. Spalte) und Milliseconds
(2. Spalte) in aufsteigender Reihenfolge.
SELECT
name,
milliseconds,
albumid
FROM
tracks
ORDER BY
3,2;
Code language: SQL (Structured Query Language) (sql)
Probieren Sie es aus
Die Zahlen 3 und 2 beziehen sich auf die AlbumId
und Milliseconds
in der Spaltenliste, die im SELECT
erscheint Klausel.
NULLen sortieren
In der Datenbankwelt ist NULL etwas Besonderes. Es zeigt an, dass die Informationen fehlen oder die Daten nicht zutreffend sind.
Angenommen, Sie möchten den Geburtstag eines Künstlers in einer Tabelle speichern. Zum Zeitpunkt des Speicherns des Künstlerdatensatzes liegen Ihnen die Geburtstagsinformationen nicht vor.
Um die unbekannten Geburtstagsinformationen in der Datenbank darzustellen, können Sie ein spezielles Datum wie 01.01.1900
verwenden oder ein ''
leerer String. Diese beiden Werte zeigen jedoch nicht eindeutig, dass das Geburtsdatum unbekannt ist.
NULL wurde erfunden, um dieses Problem zu lösen. Anstatt einen speziellen Wert zu verwenden, um anzuzeigen, dass die Informationen fehlen, wird NULL verwendet.
NULL ist etwas Besonderes, weil Sie es nicht mit einem anderen Wert vergleichen können. Einfach ausgedrückt, wenn die beiden Informationen unbekannt sind, können Sie sie nicht vergleichen.
NULL kann nicht einmal mit sich selbst verglichen werden; NULL ist nicht gleich sich selbst, also NULL = NULL
ergibt immer false.
Beim Sortieren betrachtet SQLite NULL als kleiner als jeden anderen Wert.
Das bedeutet, dass NULLen am Anfang der Ergebnismenge erscheinen, wenn Sie ASC verwenden, oder am Ende der Ergebnismenge, wenn Sie DESC verwenden.
SQLite 3.30.0 fügte NULLS FIRST
hinzu und NULLS LAST
Optionen zum ORDER BY
Klausel. Die NULLS FIRST
Option gibt an, dass die NULLEN am Anfang der Ergebnismenge erscheinen, während die NULLS LAST
Option platziert NULLen am Ende der Ergebnismenge.
Das folgende Beispiel verwendet den ORDER BY
Klausel zum Sortieren von Titeln nach Komponisten:
SELECT
TrackId,
Name,
Composer
FROM
tracks
ORDER BY
Composer;
Code language: SQL (Structured Query Language) (sql)
Zuerst sehen Sie, dass NULLen am Anfang der Ergebnismenge erscheinen, weil SQLite sie als die niedrigsten Werte behandelt. Wenn Sie das Ergebnis nach unten scrollen, sehen Sie andere Werte:
Das folgende Beispiel verwendet NULLS LAST
Option zum Platzieren von NULLen nach anderen Werten:
SELECT
TrackId,
Name,
Composer
FROM
tracks
ORDER BY
Composer NULLS LAST;
Code language: SQL (Structured Query Language) (sql)
Wenn Sie in der Ausgabe nach unten scrollen, werden Sie sehen, dass NULLen am Ende der Ergebnismenge platziert werden:
In diesem Tutorial haben Sie gelernt, wie Sie den SQLite ORDER BY
verwenden -Klausel, um die Ergebnismenge anhand einer einzelnen Spalte oder mehrerer Spalten in aufsteigender und absteigender Reihenfolge zu sortieren.