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


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

    1 前提

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

    2 如何用

    2.1 只有一个排序字段

    2.1.1 相应的具体语法

    SELECT 字段1,字段2....字段n
    FROM 表名
    ORDER BY 需要排序的字段1 排序规则;
    /*
     首先执行FROM子句,再去执行SELECT子句,找到满足条件的数据行,然后再把满足条件的数据行
     按照排序字段1的排序规则进行排序
     其中排序规则有升序和降序,默认不写就是升序
     升序需要写的关键字为ASC,降序需要写的关键字为DESC
     注意:不要和desc 表名搞混,这个是展示表的结构
    */
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10

    2.1.2 示例sql语句

    SELECT *
    FROM student01
    ORDER BY age;
    /*
    把查询得到的student01的所有数据行按照age字段进行升序排列
    */
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6

    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 表名搞混,这个是展示表的结构
    */
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11

    2.2.2 示例sql语句

    SELECT *
    FROM student01
    ORDER BY age,name DESC;
    /*
    对SELECT子句中查询到的数据行先进行age字段的升序排序,当age字段年龄相同时,则按照name字段进行降序排列
    */
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6

    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;
    
    • 1
    • 2
    • 3

    3.1.2 示例sql语句

    SELECT name AS '姓名',age AS '年龄'
    FROM student01
    ORDER BY 年龄 ASC,姓名 DESC;
    /*
    如果别名是带单引号的中文的话,在ORDER BY子句中使用别名不用加上单引号
    */
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6

    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代表数据库的第一列即为数据表的第一个字段所在的列
    */
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6

    3.3.2 示例sql语句

    SELECT name,age
    FROM student01
    ORDER BY 2,1 DESC;
    /*
    列编号这种写法建议不要写,因为阅读体验感极差,然后知道有这个用法
    就行,看见别人写这种写法的话,只要自己能看懂就行
    */
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7

    3.3.3 示例sql语句运行截图

    在这里插入图片描述

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

    3.4.1 示例sql代码

    SELECT *
    FROM student01
    ORDER BY age DESC;
    
    • 1
    • 2
    • 3

    3.4.2 示例sql代码运行截图

    在这里插入图片描述

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

    3.5.1 示例sql代码

    SELECT name
    FROM student01
    ORDER BY age ASC;
    /*
    ORDER BY中参与排序的字段可以是student01表中的任意一个字段
    */
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6

    3.5.2 示例sql代码运行截图

    在这里插入图片描述

  • 相关阅读:
    2022-34~35周(8.15-8.28) 项目问题整理
    网络编程:阻塞IO和非阻塞IO(fcntl函数说明)
    解决win10因为WSL问题无法正常启动docker
    Android学习笔记 26. Fragment生命周期
    CSS 样式优先级
    java计算机毕业设计网络教学系统源码+系统+数据库+lw文档
    Go 单元测试基本介绍
    Java项目——物业管理系统(附源码+数据库)
    小学时代的一些回忆
    微信小游戏5月畅销榜,新老产品更替显著,亿级爆款频出
  • 原文地址:https://blog.csdn.net/SSS4362/article/details/126293043