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:
Siga o procedimento em Como: Executar uma consulta que retorna resultados StructuralType.
Passe a seguinte consulta como um argumento para o
ExecuteStructuralTypeQuery
método:
SELECT VALUE p FROM AdventureWorksEntities.Products
AS p ORDER BY p.ListPrice