Trier les résultats

Effectué

Dans l’ordre logique du traitement des requêtes, ORDER BY est la dernière phase d’une instruction SELECT à exécuter. L’opération ORDER BY vous permet de contrôler le tri des lignes à mesure qu’elles sont retournées par SQL Server à l’application cliente. SQL Server ne garantit pas l’ordre physique des lignes d’une table, et la seule façon de contrôler l’ordre dans lequel les lignes sont retournées au client est avec une clause ORDER BY. Ce comportement est conforme à la théorie relationnelle.

Utilisation de la clause ORDER BY

Pour indiquer à SQL Server de retourner les résultats de votre requête dans un ordre particulier, vous ajoutez une clause ORDER BY sous cette forme :

SELECT<select_list>
FROM <table_source>
ORDER BY <order_by_list> [ASC|DESC];

ORDER BY peut prendre plusieurs types d’éléments dans sa liste :

  • Colonnes par nom. Vous pouvez spécifier les noms des colonnes par lesquelles les résultats doivent être triés. Les résultats sont retournés dans l’ordre de la première colonne, puis sous-triés par chaque colonne supplémentaire dans l’ordre.
  • Alias de colonne. Étant donné que la clause ORDER BY est traitée après la clause SELECT, elle a accès aux alias définis dans la liste SELECT.
  • Colonnes par position ordinale dans la liste SELECT. L’utilisation de la position n’est pas recommandée dans vos applications, en raison de la lisibilité réduite et du soin supplémentaire requis pour maintenir à jour la liste ORDER BY. Toutefois, pour les expressions complexes dans la liste SELECT, l’utilisation du numéro de position peut être utile lors de la résolution des problèmes.
  • Colonnes non incluses dans la liste SELECT, mais disponibles à partir des tables répertoriées dans la clause FROM. Si la requête utilise une option DISTINCT, toutes les colonnes de la liste ORDER BY doivent être incluses dans la liste SELECT.

Direction de tri

En plus de spécifier les colonnes à utiliser pour déterminer l’ordre de tri, vous pouvez également contrôler la direction du tri. Vous pouvez utiliser ASC pour l’ordre croissant (A-Z, 0-9) ou DESC pour l’ordre décroissant (Z-A, 9-0). Les tris se font par ordre croissant par défaut. Chaque colonne peut avoir sa propre direction spécifiée, comme dans l’exemple suivant :

SELECT ProductCategoryID AS Category, ProductName
FROM Production.Product
ORDER BY Category ASC, Price DESC;