跳转到内容

Order by

维基百科,自由的百科全书

SQL中的ORDER BY子句用于指定SELECT语句返回的结果集英语Result set按一个或多个列的值进行排序。用于排序的标准(即排序列)并不一定要包含在最终的结果集中(但在SELECT DISTINCT, GROUP BY, UNION [DISTINCT], EXCEPT [DISTINCT]INTERSECT [DISTINCT]等操作中存在某些限制)。排序标准可以是表达式,包括列名、用户自定义函数、算术运算或CASE表达式。系统会计算这些表达式的值,并根据计算结果(如列中存储的值或函数调用结果)进行排序。

ORDER BY是对结果集中的行进行排序的唯一方法。如果没有该子句,关系数据库系统返回行的顺序是随机的(即任何顺序)。如果应用程序需要特定的顺序,则必须在发送的SELECT语句中提供ORDER BY。虽然某些数据库系统允许在子查询或视图定义中使用ORDER BY子句,但它们通常对最终结果集的顺序没有影响,除非与偏移量(OFFSET)或取前N行(FETCH FIRST/LIMIT)子句结合使用才有意义。视图是一个逻辑上的关系表,而关系模型要求表是行的集合,这意味着表本身不带有任何排序属性。唯一的例外是像ORDER BY ORDER OF ...(未在 SQL:2003中标准化)这样的结构,它允许排序标准在嵌套子查询中传递。

SQL标准的核心功能并未明确定义空值(NULL)的默认排序顺序。根据SQL:2003扩展 T611(Elementary OLAP operations),可以使用ORDER BY列表中的NULLS FIRSTNULLS LAST子句,分别将空值排在所有数据值之前或之后。然而,并非所有数据库都实现了这一功能。未实现此功能的数据库可能指定不同的Null排序处理方式。[1]

使用ORDER BY ... DESC表示降序排列,否则默认为升序排列(升序也可以使用ASC显式指定)。

例子

[编辑]
SELECT * FROM Employees 
ORDER BY LastName, FirstName

参考文献

[编辑]
  1. ^ NULL Handling in SQLite Versus Other Database Engines. [January 25, 2009]. (原始内容存档于2013-07-08).