如何对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代码运行截图
总结
以上为个人经验,希望能给大家一个参考,也希望大家多多支持脚本之家。