SQLite
 sql >> Base de données >  >> RDS >> SQLite

SQLite Trier par

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.