sql >> Database >  >> RDS >> SQLite

SQLite bestellen op

Samenvatting :in deze tutorial leer je hoe je een resultatenset van een query sorteert met SQLite ORDER BY clausule.

Inleiding tot SQLite ORDER BY clausule

SQLite slaat gegevens in de tabellen op in een niet-gespecificeerde volgorde. Het betekent dat de rijen in de tabel al dan niet in de volgorde staan ​​waarin ze zijn ingevoegd.

Als u de SELECT . gebruikt statement om gegevens uit een tabel op te vragen, is de volgorde van de rijen in de resultatenset niet gespecificeerd.

Om de resultatenset te sorteren, voegt u de ORDER BY . toe clausule aan de SELECT verklaring als volgt:

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

De ORDER BY clausule komt na de FROM clausule. Hiermee kunt u de resultatenset sorteren op basis van een of meer kolommen in oplopende of aflopende volgorde.

In deze syntaxis plaatst u de kolomnaam waarop u wilt sorteren na de ORDER BY clausule gevolgd door de ASC of DESC zoekwoord.

  • De ASC trefwoord betekent oplopend.
  • En de DESC trefwoord betekent aflopend.

Als u de ASC . niet opgeeft of DESC trefwoord, sorteert SQLite de resultatenset met behulp van de ASC optie. Met andere woorden, het sorteert de resultatenset standaard in oplopende volgorde.

Als u de resultatenset op meerdere kolommen wilt sorteren, gebruikt u een komma (,) om twee kolommen te scheiden. De ORDER BY clausule sorteert rijen met behulp van kolommen of uitdrukkingen van links naar rechts. Met andere woorden, de ORDER BY clausule sorteert de rijen met behulp van de eerste kolom in de lijst. Vervolgens sorteert het de gesorteerde rijen met behulp van de tweede kolom, enzovoort.

U kunt de resultatenset sorteren met behulp van een kolom die niet voorkomt in de selectielijst van de SELECT clausule.

SQLite ORDER BY clausule voorbeeld

Laten we de tracks nemen tabel in de voorbeelddatabase voor de demonstratie.

Stel dat u gegevens wilt ophalen uit naam, milliseconden en album-ID-kolommen, dan gebruikt u de volgende instructie:

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

Probeer het

De SELECT statement dat geen gebruik maakt van ORDER BY clausule geeft een resultaatset terug die niet in een willekeurige volgorde staat.

Stel dat u de resultatenset wilt sorteren op basis van AlbumId kolom in oplopende volgorde gebruikt, gebruikt u de volgende verklaring:

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

Probeer het

De resultatenset wordt nu gesorteerd op AlbumId kolom in oplopende volgorde zoals weergegeven in de schermafbeelding.

SQLite gebruikt ASC standaard, zodat u het als volgt in de bovenstaande verklaring kunt weglaten:

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

Probeer het

Stel dat u het gesorteerde resultaat wilt sorteren (op AlbumId ) hierboven met de Milliseconds kolom in aflopende volgorde. In dit geval moet u de Milliseconds . toevoegen kolom naar de ORDER BY clausule als volgt:

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

Probeer het

SQLite sorteert rijen op AlbumId kolom eerst in oplopende volgorde. Vervolgens sorteert het het gesorteerde resultaat ingesteld op Milliseconds kolom in aflopende volgorde.

Als je de nummers van het album bekijkt met AlbumId 1, vindt u dat de volgorde van de sporen verandert tussen de twee uitspraken.

SQLite ORDER BY met de kolompositie

In plaats van de namen van kolommen op te geven, kunt u de positie van de kolom gebruiken in de ORDER BY clausule.

De volgende instructie sorteert de tracks bijvoorbeeld op zowel albumid (3e kolom) en milliseconds (2e kolom) in oplopende volgorde.

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

Probeer het

De cijfers 3 en 2 verwijzen naar de AlbumId en Milliseconds in de kolomlijst die verschijnt in de SELECT clausule.

NULL'S sorteren

In de databasewereld is NULL bijzonder. Het geeft aan dat de informatie ontbreekt of de gegevens niet van toepassing zijn.

Stel, je wilt de verjaardag van een artiest in een tabel bewaren. Op het moment dat u het record van de artiest opslaat, beschikt u niet over de verjaardagsgegevens.

Om de onbekende verjaardagsinformatie in de database weer te geven, kunt u een speciale datum gebruiken, zoals 01.01.1900 of een '' lege string. Beide waarden laten echter niet duidelijk zien dat de verjaardag onbekend is.

NULL is uitgevonden om dit probleem op te lossen. In plaats van een speciale waarde te gebruiken om aan te geven dat de informatie ontbreekt, wordt NULL gebruikt.

NULL is bijzonder omdat je het niet kunt vergelijken met een andere waarde. Simpel gezegd, als de twee stukjes informatie onbekend zijn, kun je ze niet vergelijken.

NULL is zelfs niet met zichzelf te vergelijken; NULL is niet gelijk aan zichzelf, dus NULL = NULL resulteert altijd in false.

Als het op sorteren aankomt, beschouwt SQLite NULL als kleiner dan elke andere waarde.

Dit betekent dat NULL's aan het begin van de resultatenset verschijnen als u ASC gebruikt of aan het einde van de resultatenset wanneer u DESC gebruikt.

SQLite 3.30.0 heeft de NULLS FIRST . toegevoegd en NULLS LAST opties voor de ORDER BY clausule. De NULLS FIRST optie specificeert dat de NULL's aan het begin van de resultatenset verschijnen terwijl de NULLS LAST optie plaats NULL's aan het einde van de resultatenset.

Het volgende voorbeeld gebruikt de ORDER BY clausule om tracks te sorteren op componisten:

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

Ten eerste zie je dat NULL's aan het begin van de resultatenset verschijnen omdat SQLite ze als de laagste waarden behandelt. Als u door het resultaat naar beneden scrolt, ziet u andere waarden:

Het volgende voorbeeld gebruikt de NULLS LAST optie om NULL's achter andere waarden te plaatsen:

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

Als u door de uitvoer naar beneden scrolt, ziet u dat NULL's aan het einde van de resultatenset worden geplaatst:

In deze tutorial heb je geleerd hoe je de SQLite ORDER BY . gebruikt clausule om de resultatenset te sorteren met een enkele kolom, meerdere kolommen in oplopende en aflopende volgorde.


  1. Oracle Apex 5.0 - Statische afbeelding weergeven

  2. Oracle Date TO_CHAR('Maand DD, YYYY') bevat extra spaties

  3. Verbind ODBC-toepassingen op Windows met QuickBooks Online

  4. Een Linked Server Login toevoegen in SQL Server (T-SQL-voorbeeld)