对Mysql数据表查询出来的结果进行排序

对Mysql数据表查询出来的结果进行排序

1 前提

这里采用的都是标准SQL语句,其他数据库的查询出来的结果也可以通过这些语句来进行排序,

2 如何用

2.1 只有一个排序字段

2.1.1 相应的具体语法
SELECT 字段1,字段2....字段n
FROM 表名
ORDER BY 需要排序的字段1 排序规则;
/*
 首先执行FROM子句,再去执行SELECT子句,找到满足条件的数据行,然后再把满足条件的数据行
 按照排序字段1的排序规则进行排序
 其中排序规则有升序和降序,默认不写就是升序
 升序需要写的关键字为ASC,降序需要写的关键字为DESC
 注意:不要和desc 表名搞混,这个是展示表的结构
*/
2.1.2 示例sql语句
SELECT *
FROM student01
ORDER BY age;
/*
把查询得到的student01的所有数据行按照age字段进行升序排列
*/
2.1.3 示例sql语句运行截图

在这里插入图片描述

2.2 有多个排序字段

2.2.1 相应的具体语法
SELECT 字段1,字段2....字段n
FROM 表名
ORDER BY 需要排序的字段1 排序规则,需要排序字段2 排序规则.....需要排序字段n 排序规则;
/*
 首先执行FROM子句,再去执行SELECT子句,找到满足条件的数据行,然后再把满足条件的数据行
 按照排序字段1的排序规则进行排序,若排序字段1内容相等,则按照排序字段2进行相应规则的排序
 后面的字段也是依次类推
 其中排序规则有升序和降序,默认不写就是升序
 升序需要写的关键字为ASC,降序需要写的关键字为DESC
 注意:不要和desc 表名搞混,这个是展示表的结构
*/
2.2.2 示例sql语句
SELECT *
FROM student01
ORDER BY age,name DESC;
/*
对SELECT子句中查询到的数据行先进行age字段的升序排序,当age字段年龄相同时,则按照name字段进行降序排列
*/
2.2.3 示例sql语句运行截图

在这里插入图片描述

3 补充说明

3.1 ORDER BY子句里面也可以写别名

3.1.1 基本语法
SELECT 字段1 AS '别名1',字段2 AS '别名2'...字段n AS '别名n'
FROM 表名
ORDER BY '别名1' 排序规则,'别名2' 排序规则....'别名n' 排序规则n;
3.1.2 示例sql语句
SELECT name AS '姓名',age AS '年龄'
FROM student01
ORDER BY 年龄 ASC,姓名 DESC;
/*
如果别名是带单引号的中文的话,在ORDER BY子句中使用别名不用加上单引号
*/
3.1.3 示例sql语句运行截图

在这里插入图片描述

3.2 ORDER BY子句的执行顺序

ORDER BY子句的执行顺序永远在最后,再具体一点来说就是,ORDER BY子句的执行顺序永远在SELECT 子句的执行之后

理由: 因为你得把筛选过、已经分组完成后的数据行拿到后才能进行排序,不然你先排序,然后再去分组,然后再还是要去排序,那这样之前的排序操作就没有任何意义了

3.3 ORDER BY子句虽然可以使用列编号进行排序(从1开始),但是不建议这么用,因为阅读体验感极差

3.3.1 基本语法
SELECT 字段1,字段2 ...字段n
FROM 表名
ORDER BY 列编号 排序规则,列编号 排序规则....列编号 排序规则n;
/*
列编号从1开始,依次递增,其中1代表数据库的第一列即为数据表的第一个字段所在的列
*/
3.3.2 示例sql语句
SELECT name,age
FROM student01
ORDER BY 2,1 DESC;
/*
列编号这种写法建议不要写,因为阅读体验感极差,然后知道有这个用法
就行,看见别人写这种写法的话,只要自己能看懂就行
*/
3.3.3 示例sql语句运行截图

在这里插入图片描述

3.4 如果排序的字段里面有null值的话,会把null值放在最前面(升序)或者最后面(降序)

3.4.1 示例sql代码
SELECT *
FROM student01
ORDER BY age DESC;
3.4.2 示例sql代码运行截图

在这里插入图片描述

3.5 ORDER BY可以使用SELECT 语句中的所有字段,也可以使用聚合函数

3.5.1 示例sql代码
SELECT name
FROM student01
ORDER BY age ASC;
/*
ORDER BY中参与排序的字段可以是student01表中的任意一个字段
*/
3.5.2 示例sql代码运行截图

在这里插入图片描述

  • 2
    点赞
  • 6
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

SSS4362

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值