SQL基础知识普及(五)——ORDER BY

简介: SQL数据库开发

SQL执行顺序

按惯例先上SQL Server查询顺序,小括号()里面的数字代码数据库引擎在执行查询语句时候的先后顺序,从1开始:

(8)SELECT(9)DISTINCT  (11)<top Num><select list>
(1)FROM
[left_table]
(3)<join_type>
JOIN<right_table>
(2)
       ON <join_condition>
(4)WHERE 
<where_condition>
(5)GROUP
BY <group_by_list>
(6)WITH
<CUBE |RollUP>
(7)HAVING
<having_condition>
(10)ORDER
BY <order_by_list>


ORDER BY作用

ORDER BY 关键字用于对结果集进行排序。


ORDER BY 关键字

ORDER BY 关键字用于按升序(ASC)或降序(DESC)对结果集进行排序。

ORDER BY 关键字默认情况下按升序(ASC)排序记录,默认排序可以不写ASC。

如果需要按降序对记录进行排序,可以使用DESC关键字,不可省略。


ORDER BY 语法

SELECT column1, column2, ... FROM table_name
ORDER BY column1, column2, ... ASC|DESC;


示例数据库

以下是 "Customers" 表中的数据:

20.jpg

RDER BY 实例

下面的 SQL 语句从 "Customers" 表中选取所有客户,并按照 "省份" 列排序:

实例:

SELECT * FROM Customers
ORDER BY 省份;

结果:


21.jpg

这里排序方式默认是升序。这里排序规则,是按照省份里的拼音首字母的ASCII规则排序的。例如北京市首字母是B,广东省的首字母是G,湖北省的首字母是H,上海市的首字母是S,浙江省的首字母是Z。排序后就是上述结果了,如果排序的首字母相同,则比较第二位字母,依次类推。


ORDER BY DESC 实例

下面的 SQL 语句从 "Customers" 表中选取所有客户,并按照 "省份" 列降序排序:

实例:

SELECT * FROM Customers
ORDER BY 省份 DESC;

结果:

22.jpg



加了DESC后排序方式变成了降序,排序规则与升序相反。


ORDER BY 多列 实例

为了让大家更加好理解,我们在Customers表中添加两行数据。

SET IDENTITY_INSERT [dbo].[Customers] ON
INSERT INTO [dbo].[Customers] (客户ID,姓名,地址,城市,邮编,省份)
VALUES
( 6, '宋一', '花城大道21号', '广州', '510000', '广东省' ),
( 7, '刘二', '长安街121号', '北京', '100000', '北京市' )
SET IDENTITY_INSERT [dbo].[Customers] OFF;


添加数据后的Customers表如下:


23.jpg

下面的 SQL 语句从 "Customers" 表中选取所有客户,并按照 "省份" 和 "姓名" 列排序:

实例:

SELECT * FROM Customers
ORDER BY 省份, 姓名;

结果:


24.jpg


可以看到,对省份排序的时候,北京市和广东省各出现了两条。这时候再对姓名这一列的拼音首字母进行排序。在省份一致的前提下,刘二的首字母是L,赵七的首字母是Z,所以刘二排在赵七的前面。同理宋一的首字母是S,王五的首字母是W,所以宋一排在王五的前面。


ORDER BY 多列 实例2

以下SQL语句从"Customers" 表中选择所有客户,按 "省份" 升序排列,并按 "姓名" 列降序排列:

SELECT * FROM Customers
ORDER BY 省份 ASC, 姓名 DESC;

结果:

25.jpg

对姓名进行降序排列后,姓名的排序结果与升序相反。


批注

ORDER BY就是对需要排序的列进行升序或降序排列后显示数据,与Excel的排序类似,只需要记住在默认情况下是升序排列,可以不写关键字ASC,但是降序的情况下必须写DESC,常与TOP关键字一起使用。

相关文章
|
6月前
|
SQL 数据库
SQL 查询优化指南:SELECT、SELECT DISTINCT、WHERE 和 ORDER BY
SQL的SELECT语句用于从数据库中选择数据。SELECT语句的基本语法如下:
104 1
|
SQL 自然语言处理 关系型数据库
每日一博 - 闲聊SQL Query Execution Order
每日一博 - 闲聊SQL Query Execution Order
56 0
|
4月前
|
SQL 数据库
SQL ORDER BY 关键字
【7月更文挑战第11天】SQL ORDER BY 关键字。
39 2
|
5月前
|
SQL 关系型数据库 MySQL
MySQL数据库——SQL优化(2/3)-order by 优化、group by 优化
MySQL数据库——SQL优化(2/3)-order by 优化、group by 优化
48 0
|
6月前
|
SQL 数据库
SQL ORDER BY 关键字
SQL ORDER BY 关键字
31 0
|
SQL
09SQL - order by关键字
09SQL - order by关键字
47 0
|
6月前
|
SQL
SQL语句两个字段或多个字段同时order by 排序
SQL语句两个字段或多个字段同时order by 排序
979 0
|
6月前
|
SQL 数据库管理
SQL基础题----基本的SELECT语句、order by排序
SQL基础题----基本的SELECT语句 ambiguous 模糊
221 1
|
6月前
|
SQL Oracle 关系型数据库
Oracle PL/SQL基础知识及应用案例
Oracle PL/SQL基础知识及应用案例
116 0
【SQL用法】sql语句中order by后多条件进行排序的问题
【SQL用法】sql语句中order by后多条件进行排序的问题
237 0