锁定老帖子 主题:用 ORDER BY 对行进行排序
精华帖 (0) :: 良好帖 (0) :: 新手帖 (0) :: 隐藏帖 (0)
|
|
---|---|
作者 | 正文 |
发表时间:2010-04-14
ORDER BY 子句按一列或多列(最多 8,060 个字节)对查询结果进行排序。 从 Microsoft SQL Server 2005 开始,SQL Server 允许在 FROM 子句中指定对 SELECT 列表中未指定的表中的列进行排序。ORDER BY 子句中引用的列名必须明确地对应于 SELECT 列表中的列或 FROM 子句中的表中的列。如果列名已在 SELECT 列表中有了别名,则 ORDER BY 子句中只能使用别名。同样,如果表名已在 FROM 子句中有了别名,则 ORDER BY 子句中只能使用别名来限定它们的列。 排序可以是升序的 (ASC),也可以是降序的 (DESC)。如果未指定是升序还是降序,就假定为 ASC。 下面的查询返回按 USE AdventureWorks; GO SELECT ProductID, ProductLine, ProductModelID FROM Production.Product ORDER BY ProductID
如果 ORDER BY 子句中指定了多个列,则排序是嵌套的。下面的语句先按产品子类别降序排序
USE AdventureWorks; GO SELECT ProductID, ProductSubcategoryID, ListPrice FROM Production.Product ORDER BY ProductSubcategoryID DESC, ListPrice
ORDER BY 子句的准确结果取决于被排序的列的排序规则。有关详细信息,请参阅使用排序规则。对于 char、varchar、nchar 和 nvarchar 列,可以指定 ORDER BY 操作按照表或视图中定义的列的排序规则之外的排序规则执行。可以指定 Windows 排序规则名称或 SQL 排序规则名称。例如,使用 Latin1_General 排序规则定义 USE AdventureWorks; GO SELECT LastName FROM Person.Contact ORDER BY LastName COLLATE Traditional_Spanish_ci_ai ASC GO
无法对数据类型为 text、ntext、image 或 xml 的列使用 ORDER BY。此外,在 ORDER BY 列表中也不允许使用子查询、聚合和常量表达式。但是,可以在聚合或表达式的选择列表中使用用户指定的名称。例如: SELECT Color, AVG (ListPrice) AS 'average list price' FROM Production.Product GROUP BY Color ORDER BY 'average list price'
ORDER BY 只保证查询的最外面的 SELECT 语句的排序结果。例如,考虑下面的视图定义: CREATE VIEW TopView AS SELECT TOP 50 PERCENT * FROM Person.Contact ORDER BY LastName
然后查询视图: SELECT * FROM TopView
尽管视图定义包含 ORDER BY 子句,但是该 ORDER BY 子句仅用于确定 TOP 子句返回的行数。查询视图自身时,SQL Server 不保证将对结果进行排序,除非明确指定,如下面的查询所示: SELECT * FROM TopView ORDER BY LastName
声明:ITeye文章版权属于作者,受法律保护。没有作者书面许可不得转载。
推荐链接
|
|
返回顶楼 | |
浏览 2517 次