Partager via


ORDER BY (Entity SQL)

Spécifie l’ordre de tri utilisé sur les objets retournés dans une instruction SELECT.

Syntaxe

[ ORDER BY
   {
      order_by_expression [SKIP n] [LIMIT n]
      [ COLLATE collation_name ]
      [ ASC | DESC ]
   }
   [ ,…n ]
]

Les arguments

order_by_expression Toute expression de requête valide spécifiant une propriété sur laquelle trier. Plusieurs expressions de tri peuvent être spécifiées. La séquence des expressions de tri dans la clause ORDER BY définit l’organisation du jeu de résultats trié.

COLLATE {collation_name} Spécifie que l’opération ORDER BY doit être effectuée en fonction du classement spécifié dans collation_name. COLLATE s’applique uniquement aux expressions de chaîne.

ASC Spécifie que les valeurs de la propriété spécifiée doivent être triées dans l’ordre croissant, de la valeur la plus basse à la valeur la plus élevée. Il s’agit de la valeur par défaut.

DESC Spécifie que les valeurs de la propriété spécifiée doivent être triées dans l’ordre décroissant, de la valeur la plus élevée à la valeur la plus basse.

LIMIT n Only the first n items will be selected.

SKIP n ignore les premiers n éléments.

Remarques

La clause ORDER BY est appliquée logiquement au résultat de la clause SELECT. La clause ORDER BY peut référencer des éléments dans la liste de sélection à l’aide de leurs alias. La clause ORDER BY peut également référencer d’autres variables actuellement dans l’étendue. Toutefois, si la clause SELECT a été spécifiée avec un modificateur DISTINCT, la clause ORDER BY ne peut référencer que des alias de la clause SELECT.

SELECT c AS c1 FROM cs AS c ORDER BY c1.e1, c.e2

Chaque expression de la clause ORDER BY doit évaluer un type qui peut être comparé pour l’inégalité ordonnée (inférieure ou supérieure à, etc.). Ces types sont généralement des primitives scalaires telles que des nombres, des chaînes et des dates. Les RowTypes de types comparables sont également comparables par ordre.

Si votre code itère sur un ensemble ordonné, autre que pour une projection de niveau supérieur, la sortie n’est pas garantie de conserver son ordre.

Dans l’exemple suivant, l’ordre est garanti pour être conservé :

SELECT C1.FirstName, C1.LastName
        FROM AdventureWorks.Contact as C1
        ORDER BY C1.LastName

Dans la requête suivante, l’ordre de la requête imbriquée est ignoré :

SELECT C2.FirstName, C2.LastName
    FROM (SELECT C1.FirstName, C1.LastName
        FROM AdventureWorks.Contact as C1
        ORDER BY C1.LastName) as C2

Pour avoir une opération UNION, UNION ALL, EXCEPT ou INTERSECT ordonnée, utilisez le modèle suivant :

SELECT ...
FROM ( UNION/EXCEPT/INTERSECT operation )
ORDER BY ...

Mots clés restreints

Les mots clés suivants doivent être placés entre guillemets lorsqu’ils sont utilisés dans une ORDER BY clause :

  • CROIX

  • FULL

  • CLÉ

  • LEFT

  • COMMANDE

  • EXTÉRIEUR

  • RIGHT

  • RANGÉE

  • VALEUR

Classement des requêtes imbriquées

Dans Entity Framework, une expression imbriquée peut être placée n’importe où dans la requête ; l’ordre d’une requête imbriquée n’est pas conservé.

La requête suivante trie les résultats par le nom :

SELECT C1.FirstName, C1.LastName
        FROM AdventureWorks.Contact as C1
        ORDER BY C1.LastName

Dans la requête suivante, l’ordre de la requête imbriquée est ignoré :

SELECT C2.FirstName, C2.LastName
    FROM (SELECT C1.FirstName, C1.LastName
        FROM AdventureWorks.Contact as C1
        ORDER BY C1.LastName) as C2

Exemple :

La requête Entity SQL suivante utilise l’opérateur ORDER BY pour spécifier l’ordre de tri utilisé sur les objets retournés dans une instruction SELECT. La requête est basée sur adventureWorks Sales Model. Pour compiler et exécuter cette requête, procédez comme suit :

  1. Suivez la procédure dans How to : Execute a Query that Returns StructuralType Results.

  2. Transmettez la requête suivante en tant qu’argument à la ExecuteStructuralTypeQuery méthode :

SELECT VALUE p FROM AdventureWorksEntities.Products 
    AS p ORDER BY p.ListPrice

Voir aussi