Résumé :dans ce tutoriel, vous apprendrez à trier un jeu de résultats d'une requête en utilisant SQLite ORDER BY
clause.
Introduction à SQLite ORDER BY
clause
SQLite stocke les données dans les tables dans un ordre non spécifié. Cela signifie que les lignes du tableau peuvent ou non être dans l'ordre dans lequel elles ont été insérées.
Si vous utilisez le SELECT
pour interroger les données d'une table, l'ordre des lignes dans le jeu de résultats n'est pas spécifié.
Pour trier le jeu de résultats, vous ajoutez le ORDER BY
clause au SELECT
déclaration comme suit :
SELECT
select_list
FROM
table
ORDER BY
column_1 ASC,
column_2 DESC;
Code language: SQL (Structured Query Language) (sql)
Le ORDER BY
la clause vient après le FROM
clause. Il vous permet de trier le jeu de résultats en fonction d'une ou plusieurs colonnes par ordre croissant ou décroissant.
Dans cette syntaxe, vous placez le nom de la colonne par laquelle vous voulez trier après le ORDER BY
clause suivie de ASC
ou DESC
mot-clé.
- Le
ASC
mot-clé signifie croissant. - Et le
DESC
mot-clé signifie décroissant.
Si vous ne spécifiez pas le ASC
ou DESC
mot-clé, SQLite trie le jeu de résultats en utilisant le ASC
option. En d'autres termes, il trie par défaut le jeu de résultats dans l'ordre croissant.
Si vous souhaitez trier le jeu de résultats sur plusieurs colonnes, vous utilisez une virgule (,) pour séparer deux colonnes. Le ORDER BY
La clause trie les lignes à l'aide de colonnes ou d'expressions de gauche à droite. En d'autres termes, le ORDER BY
La clause trie les lignes en utilisant la première colonne de la liste. Ensuite, il trie les lignes triées à l'aide de la deuxième colonne, et ainsi de suite.
Vous pouvez trier le jeu de résultats à l'aide d'une colonne qui n'apparaît pas dans la liste de sélection du SELECT
clause.
SQLite ORDER BY
exemple de clause
Prenons les tracks
table dans l'exemple de base de données pour la démonstration.
Supposons que vous souhaitiez obtenir des données à partir des colonnes de nom, de millisecondes et d'identifiant d'album, vous utilisez l'instruction suivante :
SELECT
name,
milliseconds,
albumid
FROM
tracks;
Code language: SQL (Structured Query Language) (sql)
Essayez-le
Le SELECT
instruction qui n'utilise pas ORDER BY
La clause renvoie un ensemble de résultats qui n'est dans aucun ordre.
Supposons que vous souhaitiez trier le jeu de résultats en fonction de AlbumId
colonne dans l'ordre croissant, vous utilisez l'instruction suivante :
SELECT
name,
milliseconds,
albumid
FROM
tracks
ORDER BY
albumid ASC;
Code language: SQL (Structured Query Language) (sql)
Essayez-le
Le jeu de résultats est maintenant trié par AlbumId
colonne dans l'ordre croissant comme indiqué dans la capture d'écran.
SQLite utilise ASC
par défaut, vous pouvez donc l'omettre dans l'instruction ci-dessus comme suit :
SELECT
name,
milliseconds,
albumid
FROM
tracks
ORDER BY
albumid;
Essayez-le
Supposons que vous vouliez trier le résultat trié (par AlbumId
) ci-dessus par les Milliseconds
colonne par ordre décroissant. Dans ce cas, vous devez ajouter les Milliseconds
colonne à ORDER BY
clause comme suit :
SELECT
name,
milliseconds,
albumid
FROM
tracks
ORDER BY
albumid ASC,
milliseconds DESC;
Code language: SQL (Structured Query Language) (sql)
Essayez-le
SQLite trie les lignes par AlbumId
colonne par ordre croissant en premier. Ensuite, il trie le jeu de résultats trié par Milliseconds
colonne par ordre décroissant.
Si vous regardez les pistes de l'album avec AlbumId
1, vous constatez que l'ordre des pistes change entre les deux instructions.
SQLite ORDER BY
avec la position de la colonne
Au lieu de spécifier les noms des colonnes, vous pouvez utiliser la position de la colonne dans le ORDER BY
clause.
Par exemple, l'instruction suivante trie les pistes à la fois par albumid
(3ème colonne) et milliseconds
(2ème colonne) par ordre croissant.
SELECT
name,
milliseconds,
albumid
FROM
tracks
ORDER BY
3,2;
Code language: SQL (Structured Query Language) (sql)
Essayez-le
Les chiffres 3 et 2 font référence à l'AlbumId
et Milliseconds
dans la liste des colonnes qui apparaît dans le SELECT
clause.
Trier les valeurs NULL
Dans le monde des bases de données, NULL est spécial. Cela indique que les informations manquent ou que les données ne sont pas applicables.
Supposons que vous vouliez stocker la date d'anniversaire d'un artiste dans une table. Au moment de sauvegarder la fiche de l'artiste, vous n'avez pas les informations d'anniversaire.
Pour représenter les informations d'anniversaire inconnues dans la base de données, vous pouvez utiliser une date spéciale comme 01.01.1900
ou un ''
chaîne vide. Cependant, ces deux valeurs n'indiquent pas clairement que l'anniversaire est inconnu.
NULL a été inventé pour résoudre ce problème. Au lieu d'utiliser une valeur spéciale pour indiquer que l'information est manquante, NULL est utilisé.
NULL est spécial car vous ne pouvez pas le comparer avec une autre valeur. En termes simples, si les deux informations sont inconnues, vous ne pouvez pas les comparer.
NULL n'est même pas comparable à lui-même ; NULL n'est pas égal à lui-même donc NULL = NULL
renvoie toujours faux.
En ce qui concerne le tri, SQLite considère que NULL est plus petit que toute autre valeur.
Cela signifie que les valeurs NULL apparaîtront au début du jeu de résultats si vous utilisez ASC ou à la fin du jeu de résultats si vous utilisez DESC.
SQLite 3.30.0 a ajouté le NULLS FIRST
et NULLS LAST
options au ORDER BY
clause. Le NULLS FIRST
L'option spécifie que les NULL apparaîtront au début du jeu de résultats tandis que les NULLS LAST
option place NULL à la fin du jeu de résultats.
L'exemple suivant utilise le ORDER BY
clause pour trier les morceaux par compositeurs :
SELECT
TrackId,
Name,
Composer
FROM
tracks
ORDER BY
Composer;
Code language: SQL (Structured Query Language) (sql)
Tout d'abord, vous voyez que les valeurs NULL apparaissent au début du jeu de résultats car SQLite les traite comme les valeurs les plus basses. Lorsque vous faites défiler le résultat, vous verrez d'autres valeurs :
L'exemple suivant utilise le NULLS LAST
possibilité de placer les NULL après d'autres valeurs :
SELECT
TrackId,
Name,
Composer
FROM
tracks
ORDER BY
Composer NULLS LAST;
Code language: SQL (Structured Query Language) (sql)
Si vous faites défiler la sortie, vous verrez que les valeurs NULL sont placées à la fin du jeu de résultats :
Dans ce tutoriel, vous avez appris à utiliser le SQLite ORDER BY
clause pour trier le jeu de résultats en utilisant une seule colonne, plusieurs colonnes dans l'ordre croissant et décroissant.