ORDER BY (Entity SQL)
Especifica el criterio de ordenación utilizado en los objetos devueltos en una instrucción SELECT.
Sintaxis
[ ORDER BY
{
order_by_expression [SKIP n] [LIMIT n]
[ COLLATE collation_name ]
[ ASC | DESC ]
}
[ ,…n ]
]
Argumentos
order_by_expression
Cualquier expresión de consulta válida que especifique una propiedad por la que se va a ordenar. Se pueden especificar varias expresiones de ordenación. La secuencia de las expresiones de ordenación de la cláusula ORDER BY define la organización del conjunto de resultados ordenado.
COLLATE {collation_name} Especifica que la operación ORDER BY se debe realizar de acuerdo con la intercalación especificada en collation_name
. COLLATE solo es aplicable para las expresiones de cadena.
ASC Especifica que los valores de la propiedad indicada se deben ordenar de forma ascendente, del valor más bajo al más alto. Este es el valor predeterminado.
DESC Especifica que los valores de la propiedad indicada se deben ordenar de forma descendente, del valor más alto al más bajo.
LIMIT n
Solo se seleccionarán los n
primeros elementos.
SKIP n
Omite los n
primeros elementos.
Observaciones
La cláusula ORDER BY se aplica lógicamente al resultado de la cláusula SELECT. La cláusula ORDER BY puede hacer referencia a los elementos de la lista de selección utilizando sus alias. La cláusula ORDER BY también puede hacer referencia a otras variables que estén actualmente en el ámbito. Sin embargo, si la cláusula SELECT se ha especificado con un modificador DISTINCT, la cláusula ORDER BY solo puede hacer referencia a los alias de la cláusula SELECT.
SELECT c AS c1 FROM cs AS c ORDER BY c1.e1, c.e2
Cada expresión en la cláusula ORDER BY se debe evaluar como un tipo que se puede comparar a efectos de desigualdad ordenada (menor que o mayor que, etc.). Estos tipos son generalmente primitivos escalares, como números, cadenas y fechas. Los tipos de fila de tipos comparables también se pueden comparar según el orden.
Si el código recorre en iteración un conjunto ordenado, que no sea para una proyección de nivel superior, no se garantiza que los resultados mantengan su orden.
En el ejemplo siguiente, se garantiza que se conserva el orden:
SELECT C1.FirstName, C1.LastName
FROM AdventureWorks.Contact as C1
ORDER BY C1.LastName
En la consulta siguiente, se omite la ordenación de la consulta anidada:
SELECT C2.FirstName, C2.LastName
FROM (SELECT C1.FirstName, C1.LastName
FROM AdventureWorks.Contact as C1
ORDER BY C1.LastName) as C2
Para tener una operación UNION, UNION ALL, EXCEPT o INTERSECT ordenada, utilice el modelo siguiente:
SELECT ...
FROM ( UNION/EXCEPT/INTERSECT operation )
ORDER BY ...
Palabras clave restringidas
Las palabras clave siguientes debe ir entre comillas cuando se utilizan en una cláusula ORDER BY
:
CROSS
FULL
KEY
LEFT
ORDER
OUTER
RIGHT
ROW
VALOR
Ordenar las consultas anidadas
En Entity Framework, una expresión anidada se puede colocar en cualquier parte de la consulta; el orden de una consulta anidada no se conserva.
La consulta siguiente ordenará los resultados por el apellido:
SELECT C1.FirstName, C1.LastName
FROM AdventureWorks.Contact as C1
ORDER BY C1.LastName
En la consulta siguiente, se omite la ordenación de la consulta anidada:
SELECT C2.FirstName, C2.LastName
FROM (SELECT C1.FirstName, C1.LastName
FROM AdventureWorks.Contact as C1
ORDER BY C1.LastName) as C2
Ejemplo
La consulta de Entity SQL siguiente usa el operador ORDER BY para especificar el criterio de ordenación utilizado en los objetos devueltos en una instrucción SELECT. La consulta se basa en el modelo AdventureWorks Sales. Para compilar y ejecutar esta consulta, siga estos pasos:
Siga el procedimiento de How to: Execute a Query that Returns StructuralType Results.
Pase la consulta siguiente como argumento al método
ExecuteStructuralTypeQuery
:
SELECT VALUE p FROM AdventureWorksEntities.Products
AS p ORDER BY p.ListPrice