Compartir a través de


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:

  1. Siga el procedimiento de How to: Execute a Query that Returns StructuralType Results.

  2. Pase la consulta siguiente como argumento al método ExecuteStructuralTypeQuery :

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

Consulte también