Clause ORDER BY (Transact-SQL)

Mis à jour : 14 avril 2006

Spécifie l'ordre de tri utilisé sur des colonnes renvoyées dans une instruction SELECT. La clause ORDER BY n'est pas valide dans les vues, les fonctions Inline, les tables dérivées et les sous-requêtes, sauf si TOP est également spécifié.

ms188385.note(fr-fr,SQL.90).gifRemarque :
Lorsque la clause ORDER BY est utilisée dans la définition d'une vue, d'une fonction incluse, d'une table dérivée ou d'une sous-requête, elle permet uniquement de déterminer les lignes retournées par la clause TOP. La clause ORDER BY ne garantit pas des résultats classés lorsque ces constructions sont interrogées, sauf si ORDER BY est également spécifié dans la requête proprement dite.

Icône Lien de rubriqueConventions de la syntaxe de Transact-SQL

Syntaxe

[ ORDER BY 
    {
    order_by_expression 
  [ COLLATE collation_name ] 
  [ ASC | DESC ] 
    } [ ,...n ] 
] 

Arguments

  • order_by_expression
    Indique une colonne dans laquelle effectuer un tri. Une colonne de tri peut être définie comme un nom ou alias de colonne ou un nombre entier non négatif représentant la position du nom ou de l'alias dans la liste de sélection. Il n'est pas possible de spécifier un nombre entier lorsque l'argument order_by_expression apparaît dans une fonction de classement. Une colonne de tri peut inclure une expression ; cependant, lorsque la base de données s'exécute en mode de compatibilité SQL Server 2005 (90), le résultat de l'expression ne peut pas être une constante. Les noms ou alias de colonne peuvent être qualifiés par le nom de la table ou de la vue. Dans SQL Server 2005, les noms et les alias de colonne qualifiés sont résolus en colonnes listées dans la clause FROM. Si order_by_expression n'est pas qualifié, la valeur doit être unique parmi toutes les colonnes répertoriées dans l'instruction SELECT.

    Il est possible de définir plusieurs colonnes de tri. La séquence des colonnes de tri de la clause ORDER BY définit la structure de l'ensemble de résultats trié.

    La clause ORDER BY peut comporter des éléments qui n'apparaissent pas dans la liste de sélection. Toutefois, si SELECT DISTINCT est spécifié, si l'instruction contient une clause GROUP BY ou si l'instruction SELECT contient un opérateur UNION, les colonnes de tri doivent apparaître dans la liste de sélection.

    De plus, lorsqu'une instruction SELECT comprend un opérateur UNION, les noms ou alias de colonne doivent correspondre à ceux spécifiés dans la première liste de sélection.

    ms188385.note(fr-fr,SQL.90).gifRemarque :
    Les colonnes ntext, text, image ou xml ne peuvent pas être utilisées dans une clause ORDER BY.
  • COLLATE {collation_name}
    Spécifie que l'opération ORDER BY doit être exécutée conformément au classement spécifié dans collation_name, et non pas conformément au classement de la colonne tel que défini dans la table ou la vue. collation_name peut être soit un nom de classement Windows, soit un nom de classement SQL. Pour plus d'informations, consultez Paramètres de classement du programme d'installation et Utilisation des classements SQL. COLLATE est applicable seulement pour les colonnes dont le type de données est char, varchar, nchar et nvarchar.
  • ASC
    Indique que les valeurs de la colonne spécifiée doivent être triées par ordre croissant, de la plus petite à la plus grande des valeurs.
  • DESC
    Indique que les valeurs de la colonne spécifiée doivent être triées par ordre décroissant, de la plus grande à la plus petite des valeurs.

Notes

Les valeurs NULL sont traitées comme les valeurs les plus petites possible.

Il n'y a aucune limite concernant le nombre d'éléments dans la clause ORDER BY. Toutefois, il existe une limite de 8 060 octets pour la taille des lignes des tables de travail intermédiaires nécessaires aux opérations de tri. Ceci limite la taille totale des colonnes spécifiées dans une clause ORDER BY.

Lorsqu'elle est utilisée avec une instruction SELECT...INTO qui insère des lignes provenant d'une autre source, la clause ORDER BY ne garantit pas que les lignes seront insérées dans l'ordre spécifié.

Voir aussi

Référence

Expressions (Transact-SQL)
SELECT (Transact-SQL)
FROM (Transact-SQL)

Autres ressources

Tri des lignes à l'aide de ORDER BY

Aide et Informations

Assistance sur SQL Server 2005

Historique des modifications

Version Historique

14 avril 2006

Nouveau contenu :
  • Des éclaircissements ont été fournis quant au rôle de la clause ORDER BY dans une définition de fonction incluse, de table dérivée ou de sous-requête.

5 décembre 2005

Nouveau contenu :
  • Des éclaircissements ont été fournis quant au rôle de la clause ORDER BY dans une définition de vue.