SQL查询排序ORDER BY

本文详细介绍了SQL中ORDER BY子句的使用方法,包括升序(ASC)和降序(DESC)排序方式,以及如何指定排序字段。此外,还讲解了如何利用查询列表中的序号进行排序。

排序通过order by子句实现,order by在SELECT语句的最后。  

语法:
order by field1 [ASC|DESC][,field2 [ASC|DESC],..,fieldn [ASC|DESC]] 

说明:
1. ASC:升序,DESC:降序,默认为升序
2. 空值作为无穷大来处理

另外可以按照查询列表中序号进行排序。系统在用户写出查询列表的同时就赋予每个列名一个序号,升序赋予,从1开始。
例:SELECT name,phone,adress from user
其中name序号为1,adress序号为2,其他依次类推。以下语句按loc字段升序排列 :
SQL> select deptno,dname,loc from mydept order by 3;

SQL Server 中,`ORDER BY` 子句用于对查询结果进行排序。你可以根据列值、表达式、别名、位置序号等来指定排序规则。SQL Server 默认使用数据库的排序规则(collation),但你也可以显式地为排序操作指定排序规则(collation)。 以下是一些常见的使用方式,包括如何在 `ORDER BY` 中指定排序规则。 --- ### 示例 1:基本排序(默认排序规则) ```sql SELECT * FROM Employees ORDER BY LastName; ``` **解释:** - 按 `LastName` 列进行默认排序(使用数据库或列定义的排序规则)。 --- ### 示例 2:指定排序方向(ASC / DESC) ```sql SELECT * FROM Employees ORDER BY Salary DESC; ``` **解释:** - 按薪资降序列。 --- ### 示例 3:按多个字段排序 ```sql SELECT * FROM Employees ORDER BY Department ASC, Salary DESC; ``` **解释:** - 先按部门升序列,同一部门内按薪资降序列。 --- ### 示例 4:按别名排序 ```sql SELECT FirstName + ' ' + LastName AS FullName FROM Employees ORDER BY FullName; ``` **解释:** - 使用别名 `FullName` 进行排序。 --- ### 示例 5:使用列序号排序(不推荐) ```sql SELECT FirstName, LastName, Salary FROM Employees ORDER BY 3 DESC; ``` **解释:** - 按查询结果的第 3 列(即 `Salary`)降序排序。 --- ### ✅ 示例 6:在 `ORDER BY` 中指定排序规则(Collation) ```sql SELECT * FROM Employees ORDER BY LastName COLLATE Latin1_General_BIN; ``` **解释:** - 使用 `COLLATE` 关键字强制指定排序规则,此处使用的是 `Latin1_General_BIN`(二进制排序)。 - 这可以确保排序不依赖于数据库或列的默认排序规则。 - 适用于需要跨数据库或跨语言排序的场景。 --- ### 示例 7:结合 `CASE` 表达式自定义排序逻辑 ```sql SELECT * FROM Employees ORDER BY CASE WHEN Department = 'HR' THEN 1 WHEN Department = 'IT' THEN 2 ELSE 3 END ASC; ``` **解释:** - 自定义排序顺序,HR 部门优先,IT 次之,其他最后。 --- ### 示例 8:对中文字段排序并指定排序规则 ```sql SELECT * FROM Employees ORDER BY ChineseName COLLATE Chinese_PRC_CI_AS; ``` **解释:** - 对中文字段使用指定的排序规则进行排序,`Chinese_PRC_CI_AS` 表示简体中文、不区分大小写、区分重音。 ---
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值