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.