![](https://img.haomeiwen.com/i19126043/b401d709baf197bb.jpg)
mysql数据排序
在查询数据时,如果没有使用排序操作,默认情况下SQL会按数据添加的顺序来排列查询结果。
要对数据进行排序,需要在select语句后边加上order by 以及排序依据。
▲ 按照排序依据排序可以分为:按照列名排序、列的别名排序、列的编号排序。
▲ 按照顺序升降可以分为:升序排列(由小到大)和降序排列(由大到小),升序排列在排序依据后边加ASC(asc可以省略)、降序排列在排序依据后边加DESC(DESC不能省略),也就是默认情况下是按照升序排列的。
▲ 按照列的多少可以分为:单列排序、多列排序。
现有学生表如下图:
![](https://img.haomeiwen.com/i19126043/5a81780688217805.png)
按照年龄由小到大对学生进行排序(单列排序)。
按照列名排序
select * from student order by sage asc;
按照列的编号排序
select * from student order by 4 asc;
按照列的别名排序
select sno 学号,sname 姓名,sage as 年龄,ssex as 性别 from student order by 年龄 asc;
![](https://img.haomeiwen.com/i19126043/d5845ec9d5881d3d.png)
先按照性别由男到女排,再按照年龄由大到小排(多列排序)。
select sno 学号,sname 姓名,sage as 年龄,ssex as 性别 from student order by 性别 desc,年龄 desc;
![](https://img.haomeiwen.com/i19126043/2d212cab54f7347d.png)
先按照年龄由大到小排列,再按照性别由女到男排列(多列排序)。
按照列名排序
select sno 学号,sname 姓名,sage as 年龄,ssex as 性别 from student order by sage desc,ssex asc;
按照列的编号排序
select sno 学号,sname 姓名,sage as 年龄,ssex as 性别 from student order by 3 desc,4 asc;
按照列的别名排序
select sno 学号,sname 姓名,sage as 年龄,ssex as 性别 from student order by 年龄 desc,性别 asc;
![](https://img.haomeiwen.com/i19126043/b0199a3cb2ed1e67.png)
需要注意按照多列排序时,哪列在前哪列在后排出来结果是完全不同的,所以多列排序一定要注意列的顺序。按照列的别名排序时,必须先给列起别名。
网友评论