sql >> Databasteknik >  >> RDS >> SQLite

SQLite Order By

Sammanfattning :i denna handledning lär du dig hur du sorterar en resultatuppsättning av en fråga med SQLite ORDER BY klausul.

Introduktion till SQLite ORDER BY klausul

SQLite lagrar data i tabellerna i en ospecificerad ordning. Det betyder att raderna i tabellen kan vara i den ordning som de infogades eller inte.

Om du använder SELECT sats för att fråga data från en tabell, ordningen på raderna i resultatuppsättningen är ospecificerad.

För att sortera resultatuppsättningen lägger du till ORDER BY sats till SELECT uttalande enligt följande:

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

ORDER BY satsen kommer efter FROM klausul. Det låter dig sortera resultatuppsättningen baserat på en eller flera kolumner i stigande eller fallande ordning.

I den här syntaxen placerar du kolumnnamnet som du vill sortera efter ORDER BY sats följt av ASC eller DESC nyckelord.

  • ASC nyckelord betyder stigande.
  • Och DESC nyckelord betyder fallande.

Om du inte anger ASC eller DESC nyckelord, sorterar SQLite resultatuppsättningen med ASC alternativ. Med andra ord, den sorterar resultatet som standard i stigande ordning.

Om du vill sortera resultatuppsättningen efter flera kolumner, använder du ett kommatecken (,) för att separera två kolumner. ORDER BY sats sorterar rader med hjälp av kolumner eller uttryck från vänster till höger. Med andra ord, ORDER BY satsen sorterar raderna med den första kolumnen i listan. Sedan sorterar den de sorterade raderna med den andra kolumnen och så vidare.

Du kan sortera resultatuppsättningen med en kolumn som inte visas i urvalslistan för SELECT klausul.

SQLite ORDER BY klausulexempel

Låt oss ta tracks tabell i exempeldatabasen för demonstrationen.

Anta att du vill hämta data från kolumner för namn, millisekunder och album-id, använder du följande sats:

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

Prova det

SELECT uttalande som inte använder ORDER BY klausul returnerar en resultatuppsättning som inte är i någon ordning.

Anta att du vill sortera resultatuppsättningen baserat på AlbumId kolumnen i stigande ordning använder du följande sats:

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

Prova det

Resultatuppsättningen är nu sorterad efter AlbumId kolumn i stigande ordning som visas på skärmdumpen.

SQLite använder ASC som standard så att du kan utelämna det i ovanstående uttalande enligt följande:

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

Prova det

Anta att du vill sortera det sorterade resultatet (efter AlbumId ) ovan med Milliseconds kolumn i fallande ordning. I det här fallet måste du lägga till Milliseconds kolumnen till ORDER BY klausul enligt följande:

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

Prova det

SQLite sorterar rader efter AlbumId kolumnen i stigande ordning först. Sedan sorterar den det sorterade resultatet efter Milliseconds kolumn i fallande ordning.

Om du tittar på låtarna i albumet med AlbumId 1, upptäcker du att ordningen på spåren ändras mellan de två påståendena.

SQLite ORDER BY med kolumnpositionen

Istället för att ange namnen på kolumner kan du använda kolumnens position i ORDER BY klausul.

Till exempel sorterar följande påstående spåren efter båda albumid (3:e kolumnen) och milliseconds (2:a kolumnen) i stigande ordning.

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

Prova det

Siffran 3 och 2 hänvisar till AlbumId och Milliseconds i kolumnlistan som visas i SELECT klausul.

Sortera NULL

I databasvärlden är NULL speciell. Det anger att informationen saknas eller att uppgifterna inte är tillämpliga.

Anta att du vill lagra en artists födelsedag i ett bord. När du sparar artistens rekord har du inte födelsedagsinformationen.

För att representera den okända födelsedagsinformationen i databasen kan du använda ett speciellt datum som 01.01.1900 eller en '' tom sträng. Båda dessa värden visar dock inte tydligt att födelsedagen är okänd.

NULL uppfanns för att lösa detta problem. Istället för att använda ett speciellt värde för att indikera att informationen saknas, används NULL.

NULL är speciellt eftersom du inte kan jämföra det med ett annat värde. Enkelt uttryckt, om de två informationsbitarna är okända kan du inte jämföra dem.

NULL kan inte ens jämföras med sig själv; NULL är inte lika med sig själv så NULL = NULL resulterar alltid i falskt.

När det gäller sortering anser SQLite att NULL är mindre än något annat värde.

Det betyder att NULL visas i början av resultatuppsättningen om du använder ASC eller i slutet av resultatuppsättningen när du använder DESC.

SQLite 3.30.0 lade till NULLS FIRST och NULLS LAST alternativ till ORDER BY klausul. NULLS FIRST alternativet anger att NULLs kommer att visas i början av resultatuppsättningen medan NULLS LAST alternativet placera NULLs i slutet av resultatuppsättningen.

Följande exempel använder ORDER BY klausul för att sortera spår efter kompositörer:

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

Först ser du att NULL visas i början av resultatuppsättningen eftersom SQLite behandlar dem som de lägsta värdena. När du rullar nedåt i resultatet ser du andra värden:

Följande exempel använder NULLS LAST alternativ för att placera NULL efter andra värden:

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

Om du bläddrar nedåt i utgången ser du att NULLs placeras i slutet av resultatuppsättningen:

I den här handledningen har du lärt dig hur du använder SQLite ORDER BY sats för att sortera resultatuppsättningen med en enda kolumn, flera kolumner i stigande och fallande ordning.


  1. 6 funktioner för att hämta dag, månad och år från ett datum i SQL Server

  2. Ansluter PowerShell till Salesforce.com

  3. Konfigurera AlwaysOn-tillgänglighetsgrupper - Del 2

  4. ORA-01111 i MRP i fysisk standby-databas