指定在 SELECT 语句中返回的对象上使用的排序顺序。
语法
[ ORDER BY
{
order_by_expression [SKIP n] [LIMIT n]
[ COLLATE collation_name ]
[ ASC | DESC ]
}
[ ,…n ]
]
论据
order_by_expression 指定要对其排序的属性的任何有效查询表达式。 可以指定多个排序表达式。 ORDER BY 子句中的排序表达式序列定义排序结果集的组织。
COLLATE {collation_name} 指定应根据中指定的 collation_name排序规则执行 ORDER BY作。 COLLATE 仅适用于字符串表达式。
ASC 指定应按升序对指定属性中的值进行排序,从最小值到最大值。 这是默认值。
DESC 指定应按降序对指定属性中的值进行排序,从最大值到最小值。
n仅选择第一n项。
SKIP n 跳过第一 n 个项目。
注解
ORDER BY 子句在逻辑上应用于 SELECT 子句的结果。 ORDER BY 子句可以使用其别名引用选择列表中的项。 ORDER BY 子句还可以引用当前范围内的其他变量。 但是,如果使用 DISTINCT 修饰符指定了 SELECT 子句,ORDER BY 子句只能引用 SELECT 子句中的别名。
SELECT c AS c1 FROM cs AS c ORDER BY c1.e1, c.e2
ORDER BY 子句中的每个表达式都必须计算为一些类型,这些类型可以比较有序不相等(小于或大于等)。 这些类型通常是标量基元,如数字、字符串和日期。 可比较类型的行类型也是可比较的。
如果代码循环访问排序集,而不是顶级投影,则不保证输出保留其顺序。
在以下示例中,保证保留顺序:
SELECT C1.FirstName, C1.LastName
FROM AdventureWorks.Contact as C1
ORDER BY C1.LastName
在以下查询中,将忽略嵌套查询的顺序:
SELECT C2.FirstName, C2.LastName
FROM (SELECT C1.FirstName, C1.LastName
FROM AdventureWorks.Contact as C1
ORDER BY C1.LastName) as C2
若要具有有序的 UNION、UNION ALL、EXCEPT 或 INTERSECT作,请使用以下模式:
SELECT ...
FROM ( UNION/EXCEPT/INTERSECT operation )
ORDER BY ...
受限关键字
在子句中使用 ORDER BY 时,以下关键字必须用引号括起来:
十字架
完整的
钥匙
LEFT
次序
外部的
RIGHT
ROW
VALUE
对嵌套查询进行排序
在 Entity Framework 中,嵌套表达式可以放置在查询中的任意位置:嵌套查询的顺序不会保留。
以下查询将按姓氏对结果进行排序:
SELECT C1.FirstName, C1.LastName
FROM AdventureWorks.Contact as C1
ORDER BY C1.LastName
在以下查询中,将忽略嵌套查询的顺序:
SELECT C2.FirstName, C2.LastName
FROM (SELECT C1.FirstName, C1.LastName
FROM AdventureWorks.Contact as C1
ORDER BY C1.LastName) as C2
示例:
以下 Entity SQL 查询使用 ORDER BY 运算符指定在 SELECT 语句中返回的对象上使用的排序顺序。 查询基于 AdventureWorks 销售模型。 若要编译并运行此查询,请执行以下步骤:
按照作方法中的过程作 :执行返回 StructuralType 结果的查询。
将以下查询作为参数传递给
ExecuteStructuralTypeQuery方法:
SELECT VALUE p FROM AdventureWorksEntities.Products
AS p ORDER BY p.ListPrice