Order by
Une clause ORDER BY
en SQL indique qu'une instruction SQL SELECT
retourne un jeu de résultats ayant des lignes triées suivant les valeurs d'une ou plusieurs colonnes. Le critère de tri n'a pas besoin d'être inclus dans le jeu de résultats. Les critères de tri peuvent être des expressions incluant – mais non limitées à – des noms de colonnes, des fonctions définies par l'utilisateur, des opérations arithmétiques, or des expressions CASE
. Les expressions sont évaluées et leurs résultats sont utilisés pour le tri, c'est-à-dire que les valeurs stockées dans la colonne ou les résultats de l'appel de la fonction sont utilisés.
ORDER BY
est la seule façon de trier les lignes dans le jeu de résultats. Sans cette clause, le système de base de données relationnel peut retourner les lignes dans un ordre quelconque. Si un ordonnancement est requis, la clause ORDER BY
doit être fournie dans l'instruction SELECT
émise par l'application. Bien que certains systèmes de base de données permettent la spécification d'une clause ORDER BY
dans des sous-requêtes ou des définitions de vues, leur présence y sera sans effet. Une vue est une table relationnelle logique, et le modèle relationnel requiert qu'une table soit un ensemble de lignes, ce qui implique qu'il n'y a pas d'ordre de tri quel qu'il soit. Les seules exceptions sont les constructions telles que ORDER BY ORDER OF ...
(non standardisé en SQL:2003), qui permettent la propagation du critère de tri à travers les sous-requêtes imbriquées.
La fonctionnalité de base du standard SQL ne définit pas explicitement un ordre de tri par défaut pour les Nulls. Avec l'extension T611 du SQL:2003, "Opérations OLAP élémentaires", les nuls peuvent être triés avant ou après toutes les valeurs des données en utilisant les clauses NULLS FIRST
ou NULLS LAST
de la liste ORDER BY
respectivement. Les vendeurs de SGBD n'implémentent pas tous cette fonctionnalité cependant. Les vendeurs qui ne l'implémentent pas peuvent spécifier différents traitements pour le tri des Nulls dans le SGBD[1].
La syntaxe ORDER BY .
..
DESC
triera suivant l'ordre descendant, sinon l'ordre ascendant sera utilisé (ce dernier peut être spécifié explicitement en utilisant ASC
).
Exemples
SELECT * FROM Employees
ORDER BY LastName, FirstName
Cette instruction trie sur le champ LastName, ensuite sur le champ FirstName si LastName est le même.
Références
- « NULL Handling in SQLite Versus Other Database Engines » (consulté le )