Compartilhar via


ORDENAR POR (Entity SQL)

Especifica a ordem de classificação usado em objetos retornados em uma instrução SELECT.

Sintaxe

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

Argumentos

order_by_expression Qualquer expressão de consulta válida especificando uma propriedade para classificar. Várias expressões de tipo podem ser especificadas. A sequência das expressões de tipo na cláusula ORDER BY define a organização do conjunto de resultados classificada.

COLLATE {collation_name} Especifica que a operação ORDER BY deve ser executada de acordo com a ordenação especificada em collation_name. COLLATE é aplicável somente para expressões de cadeia de caracteres.

ASC Especifica que os valores na propriedade especificada devem ser classificados na ordem crescente, o valor menor para o maior valor. Esse é o padrão.

DESC Especifica que os valores na propriedade especificada devem ser classificados em ordem decrescente, o valor o maior o valor menor.

LIMIT n Somente o primeiro item de n será selecionado.

SKIP nIgnora os primeiros itens de n.

Comentários

A cláusula ORDER BY é aplicado logicamente o resultado da cláusula SELECT. A cláusula ORDER BY pode referenciar itens na lista select usando seu alias. A cláusula ORDER BY também pode referenciar outros variáveis que são atualmente em- escopo. No entanto, se a cláusula SELECT foi especificada com um modificador DISTINCT, a cláusula ORDER BY pode apenas referenciar alias de cláusula SELECT.

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

Cada expressão na cláusula ORDER BY deve avaliar a qualquer tipo que pode ser comparado para desigualdade ordenada (menor que ou maior do que, e assim por diante). Esses tipos são geralmente primitivos escalares como números, cadeias de caracteres, e datas. RowTypes de tipos comparáveis também é comparado ordem.

Se seu código itera através de um conjunto ordenado, exceto para uma projeção de nível superior, a saída não é garantida para ter sua ordem preservada.

No exemplo abaixo, é garantido que a ordem será preservada:

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

Na consulta abaixo, a ordenação da consulta aninhada é ignorada:

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

Para ter uma operação UNION, UNION ALL, EXCEPT, ou INTERSECT ordenada, use o padrão a seguir:

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

Palavras-chave restritas

As seguintes palavras chave devem ser colocados entre aspas quando usado em uma cláusula de ORDER BY :

  • CROSS

  • FULL

  • KEY

  • LEFT

  • ORDER

  • OUTER

  • RIGHT

  • ROW

  • VALUE

Ordenando consultas aninhadas

Em Entity Framework, uma expressão aninhada pode ser colocada em qualquer lugar na consulta; a ordem de uma consulta aninhada não é preservada.

A consulta abaixo ordenará os resultados pelo sobrenome:

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

Na consulta abaixo, a ordenação da consulta aninhada é ignorada:

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

Exemplo

A seguinte consulta Entity SQL usa o operador ORDER BY para especificar ordem de classificação usada em objetos retornados em uma instrução SELECT. A consulta é baseada no modelo de vendas AdventureWorks. Para compilar e executar essa consulta, siga estas etapas:

  1. Siga o procedimento em Como executar uma consulta que retorna resultados de StructuralType.

  2. Passe a consulta a seguir como um argumento para o método ExecuteStructuralTypeQuery:

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

Confira também