SQLite
 sql >> Baza danych >  >> RDS >> SQLite

Zamów SQLite według

Podsumowanie :w tym samouczku dowiesz się, jak sortować zestaw wyników zapytania przy użyciu SQLite ORDER BY klauzula.

Wprowadzenie do SQLite ORDER BY klauzula

SQLite przechowuje dane w tabelach w nieokreślonej kolejności. Oznacza to, że wiersze w tabeli mogą, ale nie muszą być w kolejności, w jakiej zostały wstawione.

Jeśli używasz SELECT do zapytania o dane z tabeli, kolejność wierszy w zestawie wyników jest nieokreślona.

Aby posortować zestaw wyników, dodaj ORDER BY klauzula SELECT oświadczenie w następujący sposób:

SELECT
   select_list
FROM
   table
ORDER BY
    column_1 ASC,
    column_2 DESC;Code language: SQL (Structured Query Language) (sql)

ORDER BY klauzula występuje po FROM klauzula. Pozwala posortować zestaw wyników na podstawie jednej lub więcej kolumn w kolejności rosnącej lub malejącej.

W tej składni umieszczasz nazwę kolumny, według której chcesz sortować po ORDER BY klauzula, po której następuje ASC lub DESC słowo kluczowe.

  • ASC słowo kluczowe oznacza rosnąco.
  • I DESC słowo kluczowe oznacza malejąco.

Jeśli nie określisz ASC lub DESC słowo kluczowe, SQLite sortuje zestaw wyników za pomocą ASC opcja. Innymi słowy, domyślnie sortuje zestaw wyników w kolejności rosnącej.

Jeśli chcesz posortować zestaw wyników według wielu kolumn, użyj przecinka (,), aby oddzielić dwie kolumny. ORDER BY klauzula sortuje wiersze za pomocą kolumn lub wyrażeń od lewej do prawej. Innymi słowy, ORDER BY klauzula sortuje wiersze przy użyciu pierwszej kolumny na liście. Następnie sortuje posortowane wiersze przy użyciu drugiej kolumny itd.

Zestaw wyników można posortować za pomocą kolumny, która nie pojawia się na liście wyboru SELECT klauzula.

SQLite ORDER BY przykład klauzuli

Weźmy tracks tabeli w przykładowej bazie danych do demonstracji.

Załóżmy, że chcesz uzyskać dane z kolumn nazwa, milisekundy i identyfikator albumu, użyj następującej instrukcji:

SELECT
	name,
	milliseconds, 
        albumid
FROM
	tracks;Code language: SQL (Structured Query Language) (sql)

Wypróbuj

SELECT instrukcja, która nie używa ORDER BY klauzula zwraca zestaw wyników, który nie jest w żadnej kolejności.

Załóżmy, że chcesz posortować zestaw wyników na podstawie AlbumId kolumna w porządku rosnącym, użyj następującego stwierdzenia:

SELECT
	name,
	milliseconds, 
	albumid
FROM
	tracks
ORDER BY
	albumid ASC;Code language: SQL (Structured Query Language) (sql)

Wypróbuj

Zestaw wyników jest teraz posortowany według AlbumId kolumna w kolejności rosnącej, jak pokazano na zrzucie ekranu.

SQLite używa ASC domyślnie, więc możesz go pominąć w powyższym oświadczeniu w następujący sposób:

SELECT
	name,
	milliseconds, 
	albumid
FROM
	tracks
ORDER BY
	albumid;

Wypróbuj

Załóżmy, że chcesz posortować posortowane wyniki (według AlbumId ) powyżej o Milliseconds kolumna w porządku malejącym. W takim przypadku musisz dodać Milliseconds kolumnę do ORDER BY klauzula w następujący sposób:

SELECT
	name,
	milliseconds, 
	albumid
FROM
	tracks
ORDER BY
	albumid ASC,
        milliseconds DESC;Code language: SQL (Structured Query Language) (sql)

Wypróbuj

SQLite sortuje wiersze według AlbumId kolumna w kolejności rosnącej jako pierwsza. Następnie sortuje posortowane wyniki ustawione według Milliseconds kolumna w kolejności malejącej.

Jeśli spojrzysz na utwory z albumu z AlbumId 1, okazuje się, że kolejność utworów zmienia się między tymi dwoma stwierdzeniami.

SQLite ORDER BY z pozycją kolumny

Zamiast określać nazwy kolumn, możesz użyć pozycji kolumny w ORDER BY klauzula.

Na przykład poniższa instrukcja sortuje utwory według obu albumid (3. kolumna) i milliseconds (2. kolumna) w porządku rosnącym.

SELECT
	name,
	milliseconds, 
	albumid
FROM
	tracks
ORDER BY
	 3,2;Code language: SQL (Structured Query Language) (sql)

Wypróbuj

Cyfry 3 i 2 odnoszą się do AlbumId i Milliseconds na liście kolumn, która pojawia się w SELECT klauzula.

Sortowanie wartości NULL

W świecie baz danych NULL jest wyjątkowy. Oznacza to, że brakujące informacje lub dane nie mają zastosowania.

Załóżmy, że chcesz zapisać datę urodzin artysty w tabeli. W momencie zapisywania danych artysty nie masz informacji o urodzinach.

Aby przedstawić nieznane informacje o urodzinach w bazie danych, możesz użyć specjalnej daty, takiej jak 01.01.1900 lub '' pusta struna. Jednak obie te wartości nie wskazują wyraźnie, że data urodzin jest nieznana.

NULL został wynaleziony, aby rozwiązać ten problem. Zamiast używania specjalnej wartości wskazującej, że brakuje informacji, używana jest wartość NULL.

NULL jest wyjątkowy, ponieważ nie można go porównać z inną wartością. Mówiąc najprościej, jeśli te dwie informacje są nieznane, nie można ich porównać.

NULL jest nawet nieporównywalny z samym sobą; NULL nie jest równy sobie, więc NULL = NULL zawsze skutkuje fałszem.

Jeśli chodzi o sortowanie, SQLite uważa NULL za mniejszą niż jakakolwiek inna wartość.

Oznacza to, że wartości NULL pojawią się na początku zestawu wyników, jeśli użyjesz ASC lub na końcu zestawu wyników, jeśli użyjesz DESC.

SQLite 3.30.0 dodał NULLS FIRST i NULLS LAST opcje do ORDER BY klauzula. NULLS FIRST opcja określa, że ​​wartości NULL pojawią się na początku zestawu wyników, podczas gdy NULLS LAST opcja umieść NULL na końcu zestawu wyników.

Poniższy przykład używa ORDER BY klauzula sortowania utworów według kompozytorów:

SELECT 
    TrackId, 
    Name, 
    Composer 
FROM 
   tracks
ORDER BY 
   Composer;Code language: SQL (Structured Query Language) (sql)

Po pierwsze, widzisz, że NULL pojawiają się na początku zestawu wyników, ponieważ SQLite traktuje je jako najniższe wartości. Gdy przewiniesz wynik, zobaczysz inne wartości:

Poniższy przykład używa NULLS LAST opcja umieszczania NULL po innych wartościach:

SELECT 
    TrackId, 
    Name, 
    Composer 
FROM 
    tracks
ORDER BY 
    Composer NULLS LAST;Code language: SQL (Structured Query Language) (sql)

Jeśli przewiniesz dane wyjściowe, zobaczysz, że wartości NULL są umieszczane na końcu zestawu wyników:

W tym samouczku nauczyłeś się korzystać z SQLite ORDER BY klauzula, aby posortować zestaw wyników za pomocą pojedynczej kolumny, wielu kolumn w porządku rosnącym i malejącym.


  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. ActiveAndroid Pre wypełnij tabelę za pomocą migracji schematu

  2. Uzyskaj pozycję znaku w ciągu w SQLite za pomocą Instr()

  3. 5 sposobów na sprawdzenie typu danych kolumny w SQLite

  4. Zapytanie SQLite w Androidzie za pomocą kursora

  5. Eksportuj wyniki zapytania SQLite do pliku CSV