Mysql 的 select 语法使用(二)

2020-04-08  本文已影响0人  改昵称已被占用
timg.jpeg

本节将介绍如何使用 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 之后。使用子句的次序不对将产生错误消息

上一篇下一篇

猜你喜欢

热点阅读