java

关注公众号 jb51net

关闭
首页 > 软件编程 > java > Mysql数据表查询出来的结果排序

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

作者:SSS4362

这篇文章主要介绍了如何对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代码运行截图

总结

以上为个人经验,希望能给大家一个参考,也希望大家多多支持脚本之家。

您可能感兴趣的文章:
阅读全文