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 n
Ignora 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:
Siga o procedimento em Como executar uma consulta que retorna resultados de StructuralType.
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