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

SQLite Ordina per

Riepilogo :in questo tutorial imparerai come ordinare un set di risultati di una query usando SQLite ORDER BY clausola.

Introduzione a SQLite ORDER BY clausola

SQLite memorizza i dati nelle tabelle in un ordine non specificato. Significa che le righe nella tabella possono essere o meno nell'ordine in cui sono state inserite.

Se usi il SELECT per interrogare i dati da una tabella, l'ordine delle righe nel set di risultati non è specificato.

Per ordinare il set di risultati, aggiungi il ORDER BY clausola al SELECT dichiarazione come segue:

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

Il ORDER BY la clausola viene dopo il FROM clausola. Ti consente di ordinare il set di risultati in base a una o più colonne in ordine crescente o decrescente.

In questa sintassi, inserisci il nome della colonna in base alla quale desideri ordinare dopo ORDER BY clausola seguita da ASC o DESC parola chiave.

  • Il ASC parola chiave significa ascendente.
  • E il DESC parola chiave significa discendente.

Se non specifichi il ASC o DESC parola chiave, SQLite ordina il set di risultati utilizzando ASC opzione. In altre parole, ordina il set di risultati in ordine crescente per impostazione predefinita.

Nel caso in cui desideri ordinare il set di risultati per più colonne, usa una virgola (,) per separare due colonne. Il ORDER BY La clausola ordina le righe utilizzando colonne o espressioni da sinistra a destra. In altre parole, il ORDER BY La clausola ordina le righe utilizzando la prima colonna nell'elenco. Quindi, ordina le righe ordinate utilizzando la seconda colonna e così via.

Puoi ordinare il set di risultati utilizzando una colonna che non compare nell'elenco di selezione di SELECT clausola.

SQLite ORDER BY esempio di clausola

Prendiamo le tracks tabella nel database di esempio per la dimostrazione.

Supponiamo di voler ottenere dati dalle colonne nome, millisecondi e ID album, utilizzare la seguente istruzione:

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

Provalo

Il SELECT istruzione che non utilizza ORDER BY clausola restituisce un set di risultati che non è in alcun ordine.

Supponiamo di voler ordinare il set di risultati in base a AlbumId colonna in ordine crescente, utilizzi la seguente istruzione:

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

Provalo

Il set di risultati ora è ordinato per AlbumId colonna in ordine crescente come mostrato nello screenshot.

SQLite usa ASC per impostazione predefinita, quindi puoi ometterlo nella dichiarazione sopra come segue:

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

Provalo

Supponiamo di voler ordinare il risultato ordinato (per AlbumId ) sopra con i Milliseconds colonna in ordine decrescente. In questo caso, devi aggiungere i Milliseconds nella colonna ORDER BY clausola come segue:

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

Provalo

SQLite ordina le righe per AlbumId prima la colonna in ordine crescente. Quindi, ordina il risultato ordinato impostato in base a Milliseconds colonna in ordine decrescente.

Se guardi le tracce dell'album con AlbumId 1, scopri che l'ordine delle tracce cambia tra le due affermazioni.

SQLite ORDER BY con la posizione della colonna

Invece di specificare i nomi delle colonne, puoi utilizzare la posizione della colonna in ORDER BY clausola.

Ad esempio, la seguente istruzione ordina i brani in base a entrambi albumid (3a colonna) e milliseconds (2a colonna) in ordine crescente.

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

Provalo

I numeri 3 e 2 si riferiscono a AlbumId e Milliseconds nell'elenco delle colonne visualizzato in SELECT clausola.

Ordinamento NULL

Nel mondo dei database, NULL è speciale. Indica che le informazioni mancano o i dati non sono applicabili.

Supponiamo di voler memorizzare il compleanno di un artista in una tabella. Al momento del salvataggio del record dell'artista, non hai le informazioni sulla data di nascita.

Per rappresentare le informazioni sul compleanno sconosciute nel database, puoi utilizzare una data speciale come 01.01.1900 o un '' stringa vuota. Tuttavia, entrambi questi valori non mostrano chiaramente che la data di nascita è sconosciuta.

NULL è stato inventato per risolvere questo problema. Invece di utilizzare un valore speciale per indicare che le informazioni mancano, viene utilizzato NULL.

NULL è speciale perché non puoi confrontarlo con un altro valore. In poche parole, se le due informazioni sono sconosciute, non puoi confrontarle.

NULL is non può nemmeno essere paragonato a se stesso; NULL non è uguale a se stesso quindi NULL = NULL risulta sempre falso.

Quando si tratta di ordinare, SQLite considera NULL più piccolo di qualsiasi altro valore.

Significa che i NULL appariranno all'inizio del set di risultati se usi ASC o alla fine del set di risultati quando usi DESC.

SQLite 3.30.0 ha aggiunto NULLS FIRST e NULLS LAST opzioni al ORDER BY clausola. Il NULLS FIRST opzione specifica che i NULL compariranno all'inizio del set di risultati mentre NULLS LAST l'opzione inserisce NULL alla fine del set di risultati.

L'esempio seguente utilizza ORDER BY clausola per ordinare le tracce per compositori:

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

Innanzitutto, vedi che i NULL vengono visualizzati all'inizio del set di risultati perché SQLite li considera come i valori più bassi. Quando scorri verso il basso il risultato, vedrai altri valori:

L'esempio seguente usa NULLS LAST opzione per posizionare NULL dopo altri valori:

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

Se scorri verso il basso l'output, vedrai che i NULL sono posizionati alla fine del set di risultati:

In questo tutorial, hai imparato a usare SQLite ORDER BY clausola per ordinare il set di risultati utilizzando una singola colonna, più colonne in ordine crescente e decrescente.