本节将介绍如何使用 select 语句的 order by 子句,根据需要排序检索出的数据
order by 子句
子句通常由一个关键字和所提供的数据组成
order by 简单使用
select *
from student
order by sage;
此 sql 语句表示查询所有出 student
表中的所有数据,并按照 sage
字段进行升序排序,输出为:
+------+--------+---------------------+------+
| SId | Sname | Sage | Ssex |
+------+--------+---------------------+------+
| 07 | 郑竹 | 1989-07-01 00:00:00 | 女 |
| 01 | 赵雷 | 1990-01-01 00:00:00 | 男 |
| 03 | 孙风 | 1990-05-20 00:00:00 | 男 |
| 04 | 李云 | 1990-08-06 00:00:00 | 男 |
| 02 | 钱电 | 1990-12-21 00:00:00 | 男 |
| 05 | 周梅 | 1991-12-01 00:00:00 | 女 |
| 06 | 吴兰 | 1992-03-01 00:00:00 | 女 |
| 12 | 赵六 | 2017-01-01 00:00:00 | 女 |
| 09 | 张三 | 2017-12-20 00:00:00 | 女 |
| 10 | 李四 | 2017-12-25 00:00:00 | 女 |
| 11 | 李四 | 2017-12-30 00:00:00 | 女 |
| 13 | 孙七 | 2018-01-01 00:00:00 | 女 |
+------+--------+---------------------+------+
order by 按多列排序
select *
from student
order by sage, sid;
此 sql 语句表示查询所有出 student
表中的所有数据,并按照 sage
字段进行升序排序,当 sage
字段内容一样,则按照 sid
的升序进行排序,输出为:
+------+--------+---------------------+------+
| SId | Sname | Sage | Ssex |
+------+--------+---------------------+------+
| 07 | 郑竹 | 1989-07-01 00:00:00 | 女 |
| 01 | 赵雷 | 1990-01-01 00:00:00 | 男 |
| 03 | 孙风 | 1990-05-20 00:00:00 | 男 |
| 04 | 李云 | 1990-05-20 00:00:00 | 男 |
| 02 | 钱电 | 1990-12-21 00:00:00 | 男 |
| 05 | 周梅 | 1991-12-01 00:00:00 | 女 |
| 06 | 吴兰 | 1992-03-01 00:00:00 | 女 |
| 12 | 赵六 | 2017-01-01 00:00:00 | 女 |
| 09 | 张三 | 2017-12-20 00:00:00 | 女 |
| 10 | 李四 | 2017-12-25 00:00:00 | 女 |
| 11 | 李四 | 2017-12-30 00:00:00 | 女 |
| 13 | 孙七 | 2018-01-01 00:00:00 | 女 |
+------+--------+---------------------+------+
order by 制定排序方向
select *
from student
order by sage desc;
此 sql 语句表示查询所有出 student 表中的所有数据,并按照 sage 字段进行降序排序,输出为:
+------+--------+---------------------+------+
| SId | Sname | Sage | Ssex |
+------+--------+---------------------+------+
| 13 | 孙七 | 2018-01-01 00:00:00 | 女 |
| 11 | 李四 | 2017-12-30 00:00:00 | 女 |
| 10 | 李四 | 2017-12-25 00:00:00 | 女 |
| 09 | 张三 | 2017-12-20 00:00:00 | 女 |
| 12 | 赵六 | 2017-01-01 00:00:00 | 女 |
| 06 | 吴兰 | 1992-03-01 00:00:00 | 女 |
| 05 | 周梅 | 1991-12-01 00:00:00 | 女 |
| 02 | 钱电 | 1990-12-21 00:00:00 | 男 |
| 04 | 李云 | 1990-08-06 00:00:00 | 男 |
| 03 | 孙风 | 1990-05-20 00:00:00 | 男 |
| 01 | 赵雷 | 1990-01-01 00:00:00 | 男 |
| 07 | 郑竹 | 1989-07-01 00:00:00 | 女 |
+------+--------+---------------------+------+
desc
关键字只应用到直接位于其前面的列名,如果想在多个列上进行降序排序, 必须对每列指定 desc
关键字
select *
from student
order by sage, sid desc;
此 sql 语句表示查询所有出 student
表中的所有数据,并按照 sage
字段进行升序排序,当 sage
字段内容一样,则按照 sid
的降序进行排序,输出为:
+------+--------+---------------------+------+
| SId | Sname | Sage | Ssex |
+------+--------+---------------------+------+
| 07 | 郑竹 | 1989-07-01 00:00:00 | 女 |
| 01 | 赵雷 | 1990-01-01 00:00:00 | 男 |
| 03 | 孙风 | 1990-05-20 00:00:00 | 男 |
| 04 | 李云 | 1990-05-20 00:00:00 | 男 |
| 02 | 钱电 | 1990-12-21 00:00:00 | 男 |
| 05 | 周梅 | 1991-12-01 00:00:00 | 女 |
| 06 | 吴兰 | 1992-03-01 00:00:00 | 女 |
| 12 | 赵六 | 2017-01-01 00:00:00 | 女 |
| 09 | 张三 | 2017-12-20 00:00:00 | 女 |
| 10 | 李四 | 2017-12-25 00:00:00 | 女 |
| 11 | 李四 | 2017-12-30 00:00:00 | 女 |
| 13 | 孙七 | 2018-01-01 00:00:00 | 女 |
+------+--------+---------------------+------+
ps:order by
关键字结合 limit
关键字可以查找出学生中年龄最大或最小的学生
select *
from student
order by sage desc
limit 1;
此 sql 语句通过对 sage
字段进行降序排序,并使用 limit
关键字去处第一条来查询出年龄最小的学生,输出为:
+------+--------+---------------------+------+
| SId | Sname | Sage | Ssex |
+------+--------+---------------------+------+
| 13 | 孙七 | 2018-01-01 00:00:00 | 女 |
+------+--------+---------------------+------+
在给出 order by
子句时,应该保证它位于 from
子句之后。如果使用 limit
,它必须位于 order by
之后。使用子句的次序不对将产生错误消息
网友评论