sql >> Database teknologi >  >> RDS >> SQLite

SQLite Bestil efter

Oversigt :i denne øvelse lærer du, hvordan du sorterer et resultatsæt af en forespørgsel ved hjælp af SQLite ORDER BY klausul.

Introduktion til SQLite ORDER BY klausul

SQLite gemmer data i tabellerne i en uspecificeret rækkefølge. Det betyder, at rækkerne i tabellen muligvis er i den rækkefølge, som de blev indsat.

Hvis du bruger SELECT sætning for at forespørge data fra en tabel, rækkefølgen af ​​rækker i resultatsættet er uspecificeret.

For at sortere resultatsættet tilføjer du ORDER BY klausul til SELECT erklæring som følger:

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

ORDER BY klausulen kommer efter FROM klausul. Det giver dig mulighed for at sortere resultatsættet baseret på en eller flere kolonner i stigende eller faldende rækkefølge.

I denne syntaks placerer du kolonnenavnet, som du vil sortere efter ORDER BY klausul efterfulgt af ASC eller DESC søgeord.

  • ASC søgeord betyder stigende.
  • Og DESC søgeord betyder faldende.

Hvis du ikke angiver ASC eller DESC søgeord, sorterer SQLite resultatsættet ved hjælp af ASC mulighed. Med andre ord sorterer den som standard resultatsættet i stigende rækkefølge.

Hvis du vil sortere resultatsættet efter flere kolonner, bruger du et komma (,) til at adskille to kolonner. ORDER BY klausul sorterer rækker ved hjælp af kolonner eller udtryk fra venstre mod højre. Med andre ord, ORDER BY klausul sorterer rækkerne ved hjælp af den første kolonne på listen. Derefter sorterer den de sorterede rækker ved hjælp af den anden kolonne, og så videre.

Du kan sortere resultatsættet ved hjælp af en kolonne, der ikke vises i udvalgslisten for SELECT klausul.

SQLite ORDER BY klausuleksempel

Lad os tage tracks tabel i eksempeldatabasen til demonstrationen.

Antag, at du vil hente data fra kolonner med navn, millisekunder og album-id, så bruger du følgende sætning:

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

Prøv det

SELECT sætning, der ikke bruger ORDER BY klausul returnerer et resultatsæt, der ikke er i nogen rækkefølge.

Antag, at du vil sortere resultatsættet baseret på AlbumId kolonne i stigende rækkefølge, bruger du følgende sætning:

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

Prøv det

Resultatsættet er nu sorteret efter AlbumId kolonne i stigende rækkefølge som vist på skærmbilledet.

SQLite bruger ASC som standard, så du kan udelade det i ovenstående erklæring som følger:

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

Prøv det

Antag, at du vil sortere det sorterede resultat (efter AlbumId ) ovenfor med Milliseconds kolonne i faldende rækkefølge. I dette tilfælde skal du tilføje Milliseconds kolonnen til ORDER BY klausul som følger:

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

Prøv det

SQLite sorterer rækker efter AlbumId kolonne i stigende rækkefølge først. Derefter sorterer den det sorterede resultat indstillet efter Milliseconds kolonne i faldende rækkefølge.

Hvis du ser på numrene på albummet med AlbumId 1, opdager du, at rækkefølgen af ​​spor skifter mellem de to udsagn.

SQLite ORDER BY med kolonnepositionen

I stedet for at angive navnene på kolonner, kan du bruge kolonnens placering i ORDER BY klausul.

For eksempel sorterer følgende sætning sporene efter både albumid (3. kolonne) og milliseconds (2. kolonne) i stigende rækkefølge.

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

Prøv det

Tallet 3 og 2 refererer til AlbumId og Milliseconds i kolonnelisten, der vises i SELECT klausul.

Sortering af NULL'er

I databaseverdenen er NULL speciel. Det angiver, at oplysningerne mangler, eller at dataene ikke er gældende.

Antag, at du vil gemme en kunstners fødselsdag i et bord. På det tidspunkt, hvor du gemmer kunstnerens rekord, har du ikke fødselsdagsoplysningerne.

For at repræsentere de ukendte fødselsdagsoplysninger i databasen kan du bruge en særlig dato som f.eks. 01.01.1900 eller en '' tom streng. Begge disse værdier viser dog ikke tydeligt, at fødselsdagen er ukendt.

NULL blev opfundet for at løse dette problem. I stedet for at bruge en speciel værdi til at angive, at informationen mangler, bruges NULL.

NULL er speciel, fordi du ikke kan sammenligne den med en anden værdi. Kort sagt, hvis de to oplysninger er ukendte, kan du ikke sammenligne dem.

NULL kan endda ikke sammenlignes med sig selv; NULL er ikke lig med sig selv, så NULL = NULL resulterer altid i falsk.

Når det kommer til sortering, anser SQLite NULL for at være mindre end nogen anden værdi.

Det betyder, at NULL'er vises i begyndelsen af ​​resultatsættet, hvis du bruger ASC eller i slutningen af ​​resultatsættet, når du bruger DESC.

SQLite 3.30.0 tilføjede NULLS FIRST og NULLS LAST muligheder til ORDER BY klausul. NULLS FIRST option angiver, at NULL'erne vises i begyndelsen af ​​resultatsættet, mens NULLS LAST option placer NULLs i slutningen af ​​resultatsættet.

Følgende eksempel bruger ORDER BY klausul for at sortere numre efter komponister:

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

Først ser du, at NULL'er vises i begyndelsen af ​​resultatsættet, fordi SQLite behandler dem som de laveste værdier. Når du ruller ned i resultatet, vil du se andre værdier:

Følgende eksempel bruger NULLS LAST mulighed for at placere NULL efter andre værdier:

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

Hvis du ruller ned i outputtet, vil du se, at NULL er placeret i slutningen af ​​resultatsættet:

I denne øvelse har du lært, hvordan du bruger SQLite ORDER BY klausul for at sortere resultatsættet ved hjælp af en enkelt kolonne, flere kolonner i stigende og faldende rækkefølge.


  1. Brug af Offline Reorg Wizard

  2. Sådan får du optegnelser fra i dag i MySQL

  3. MySQL CEILING() Funktion – Rund op til det nærmeste heltal

  4. Flet to partitioner til én i SQL Server (T-SQL)