`
speed_guo
  • 浏览: 313901 次
  • 性别: Icon_minigender_1
  • 来自: 湖北
社区版块
存档分类
最新评论

用 ORDER BY 对行进行排序

阅读更多

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。

下面的查询返回按 ProductID 升序排序的结果:

USE AdventureWorks;
GO
SELECT ProductID, ProductLine, ProductModelID
FROM Production.Product
ORDER BY ProductID

 

如果 ORDER BY 子句中指定了多个列,则排序是嵌套的。下面的语句先按产品子类别降序排序 Production.Product 表中的行,然后在每个产品子类别中按 ListPrice 升序排序这些行。

 

USE AdventureWorks;
GO
SELECT ProductID, ProductSubcategoryID, ListPrice
FROM Production.Product
ORDER BY ProductSubcategoryID DESC, ListPrice

 

ORDER BY 子句的准确结果取决于被排序的列的排序规则。有关详细信息,请参阅使用排序规则。对于 charvarcharncharnvarchar 列,可以指定 ORDER BY 操作按照表或视图中定义的列的排序规则之外的排序规则执行。可以指定 Windows 排序规则名称或 SQL 排序规则名称。例如,使用 Latin1_General 排序规则定义 AdventureWorks 数据库中的 Person.Contact 表的 LastName 列,但在下面的脚本中,使用 Traditional_Spanish 排序规则按升序返回列。

USE AdventureWorks;
GO
SELECT LastName FROM Person.Contact
ORDER BY LastName
COLLATE Traditional_Spanish_ci_ai ASC
GO

 

无法对数据类型为 textntextimagexml 的列使用 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   

  

分享到:
评论

相关推荐

    C# List OrderBy 动态多字段排序

    `OrderBy` 方法是 LINQ(Language Integrated Query) 提供的一个非常方便的排序工具,它允许我们按照一种或多种字段对数据进行升序排序。在某些情况下,我们可能需要根据动态指定的字段进行排序,这在处理复杂数据...

    Oracle数据库中ORDER BY排序和查询按IN条件的顺序输出

    在描述中提到的问题中,当使用`ORDER BY`对包含非唯一值的列进行排序,并结合分页查询时,发现不同页码的数据可能会有重复。这进一步证实了`ORDER BY`在Oracle中的不稳定特性。在没有唯一索引或主键约束的情况下,...

    MyBatisPlus条件构造器带条件排序方法orderBy、orderByDesc、orderByAsc使用示例代码

    在实际开发中,我们经常需要对查询结果进行排序,MyBatisPlus为此提供了`orderBy`、`orderByDesc`和`orderByAsc`三个方法,方便我们实现条件排序。下面将详细介绍这三个方法的使用及原理。 `orderBy`方法是...

    group by + order by

    - 如果需要对每组内的数据进行排序,则需要在 `GROUP BY` 中指定所有列,并且在 `ORDER BY` 中指定需要排序的列。 - 当需要对分组后的统计数据进行排序时,通常只需要在 `ORDER BY` 中指定聚合函数的结果列即可。 ...

    union all与order by用法

    ORDER BY 用于对查询结果进行排序,使用方法是在 SELECT 语句后添加 ORDER BY 子句,例如: ```sql SELECT * FROM t ORDER BY status; ``` 在上面的示例中,我们使用 ORDER BY 对表 t 的结果集进行排序,按照 status...

    js Table 选中行排序 多列锁定(多个OrderBy)

    "js Table 选中行排序 多列锁定(多个OrderBy)"这个主题就是关于如何实现这样的功能。 首先,我们来详细讲解如何实现表格的排序功能。在JavaScript中,我们可以利用HTML的`<table>`元素和`<tr>`(表格行)元素来...

    为什么SQL不许在视图定义ORDER BY子句

    在这个例子中,`TOP 100 PERCENT`表示返回所有行,但`ORDER BY`确保结果按照`au_lname`和`au_fname`列排序。需要注意的是,这种方法并不是在所有情况下都适用,特别是当视图用于进一步的联接或聚合操作时,排序可能...

    SqlServer按中文数字排序

     select * from LiWei order by name  找到中文数字在'一二三四五六七八九十'的位置  select id,name,SUBSTRING(name,2,1) as 中文数字,charindex(SUBSTRING(name,2,1),'一二三四五六七八九十') ...

    Mybatis排序无效问题解决.doc

    在实际开发过程中,当尝试通过动态SQL的方式实现排序功能时,可能会遇到一个常见问题:使用`order by #{sortInfo}`进行排序时,发现查询结果并未按照预期排序。例如,若传入的排序参数为`empno desc`,则期望的结果...

    深入解析mysql中order by与group by的顺序问题

    mysql 中order by 与group by的顺序是:selectfromwheregroup byorder by注意:group by 比order by先执行,order by不会对group by 内部进行排序,如果group by后只有一条记录,那么order by 将无效。要查出group ...

    Linq OrderBy

    标题 "Linq OrderBy" 和描述 "Dynamic Linq SortBy" 涉及到的是 .NET Framework 中 LINQ(Language Integrated Query,语言集成查询)的一部分,特别是如何动态地对数据进行排序。在 .NET 中,LINQ 提供了一种强大且...

    activiti5.9修复mysql order by 排序bug

    activiti5.9修复mysql order by 排序bug 详情见博客地址:http://blog.csdn.net/qq413041153/article/details/7740773#comments

    SQL-ORDER BY 多字段排序(升序、降序)

    `ORDER BY`子句用于指定查询结果的排列顺序,而多字段排序则允许我们根据多个列的值来对结果进行排序。以下是对`ORDER BY`多字段排序的详细说明。 ### 1. `ORDER BY`基本语法 `ORDER BY`子句的基本语法如下: ```...

    C#对数据库记录进行排序查询

    总的来说,C#对数据库记录进行排序查询涉及了数据库查询语言、数据访问技术以及UI组件的使用。通过理解并熟练掌握这些技术,开发者能够创建出高效且用户友好的数据管理应用程序。在实际项目中,还可能需要考虑性能...

    order by 、group by 、having的用法

    - `ORDER BY` 用于对查询结果进行排序,按照指定的字段进行升序或降序排列。默认情况下,`ORDER BY` 排序方式为升序(ASC)。例如,`SELECT * FROM table ORDER BY column1` 将按`column1`的值升序排列所有记录。 ...

    OrderBy.rar_vb的sql排序

    "OrderBy.rar_vb的sql排序"这个标题暗示我们将会探讨如何在VB中使用SQL语句来对数据库中的数据进行排序。排序是数据库操作的重要部分,它允许用户按照特定字段的值对记录进行升序或降序排列。 SQL(Structured ...

    oracle排序

    在 Oracle 中,可以使用 ORDER BY 语句对数据进行字符方式排序。例如,以下语句将对 perexl 表中的数据按照 xx 列进行排序: SELECT * FROM perexl ORDER BY perexl.xx; 二、按字符对应的数字方式排序 在 Oracle ...

    【RPA之家转载视频教程7】在UiPath中排序数据表-如何在UiPath中对数据表进行排序-RPA技术中心.rar

    在代码活动中,可以编写LINQ查询来实现排序,如`.OrderBy()`或`.OrderByDescending()`。 4. 自定义活动:对于更复杂的排序需求,可以创建自定义活动,通过编写C#代码实现个性化的排序逻辑。 在实际操作中,我们还...

    帆软:排序问题(通过帆软设置或者sql排序)

    3. **动态排序**:在SQL中,还可以使用`CASE`语句实现复杂的排序逻辑,根据特定条件对数据进行排序。 三、结合帆软与SQL的排序 1. **预处理排序**:在SQL查询时完成排序,帆软报表仅显示已排序的结果。这种方式...

    MYSQL order by排序与索引关系总结1

    MySQL中的ORDER BY排序与索引关系是数据库性能优化的关键因素之一。本文主要针对InnoDB存储引擎的B-Tree索引进行探讨,不涉及索引设计,而是关注如何有效利用索引来提升查询性能。 首先,遵循**最左前缀法则**是...

Global site tag (gtag.js) - Google Analytics