SQLite
 sql >> Datenbank >  >> RDS >> SQLite

SQLite-Reihenfolge

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.