Partilhar via


ORDER BY (Entidade SQL)

Especifica a ordem de classificação usada 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 na qual classificar. Várias expressões de classificação podem ser especificadas. A sequência das expressões de classificação na cláusula ORDER BY define a organização do conjunto de resultados classificados.

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

ASC Especifica que os valores na propriedade especificada devem ser classificados em ordem crescente, do menor valor ao maior valor. Esta é a predefinição.

DESC Especifica que os valores na propriedade especificada devem ser classificados em ordem decrescente, do valor mais alto ao valor mais baixo.

LIMITAR n Apenas os primeiros n itens serão selecionados.

SKIP n Ignora os primeiros n itens.

Observações

A cláusula ORDER BY é logicamente aplicada ao resultado da cláusula SELECT. A cláusula ORDER BY pode fazer referência a itens na lista de seleção usando seus aliases. A cláusula ORDER BY também pode fazer referência a outras variáveis que estão atualmente no escopo. No entanto, se a cláusula SELECT tiver sido especificada com um modificador DISTINCT , a cláusula ORDER BY só poderá fazer referência a aliases da 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 algum tipo que possa ser comparado para a desigualdade ordenada (menor ou maior 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 são comparáveis por ordem.

Se o seu código iterar sobre um conjunto ordenado, exceto para uma projeção de nível superior, não é garantido que a saída tenha sua ordem preservada.

Na amostra a seguir, a ordem é garantidamente preservada:

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

Na consulta a seguir, a ordem 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 ordenada UNION, UNION ALL, EXCEPT, ou INTERSECT, use o seguinte padrão:

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

Palavras-chave restritas

As seguintes palavras-chave devem ser colocadas entre aspas quando usadas em uma ORDER BY cláusula:

  • CRUZAMENTO

  • COMPLETO

  • CHAVE

  • LEFT

  • ENCOMENDA

  • EXTERIOR

  • RIGHT

  • LINHA

  • VALOR

Ordenar consultas aninhadas

No 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 a seguir ordenará os resultados pelo sobrenome:

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

Na consulta a seguir, a ordem 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 consulta Entity SQL a seguir usa o operador ORDER BY para especificar a 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 esta consulta, siga estes passos:

  1. Siga o procedimento em Como: Executar uma consulta que retorna resultados StructuralType.

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

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

Consulte também