复现问题场景

为了说明问题,模拟示例数据库表students,效果同实例。

如下语句Sql_1:SELECT * FROM students st ORDER BY st.sAge, st.sGrade DESC;

预期结果:

sAge和sGrade两个字段都按降序排列

实际结果:

sAge按升序排序,sGrade按降序排列

分析原因:

order by 多个字段时,Sql语法理解错误导致查询结果集与期望不符。

默认升序

MySql中,order by 默认是按升序排列的。

示例语句Sql_2:SELECT * FROM students st ORDER BY st.sAge;

查询结果集:

显然,不写排序方式,默认是升序。

多个字段时,各自定义升降序

MySql中,order by 多个字段时,需要各自分别定义升降序。

当然,正是本文开始处没有按此语法写Sql语句造成Bug的原因。

示例语句Sql_3:SELECT * FROM students st ORDER BY st.sAge DESC, st.sGrade DESC;

查询结果集:

显然,Sql_1想要实现Sql_3的结果是错误的。因为不写排序方式默认是升序。

多个字段时,按先后顺序排优先级

MySql中,order by 多个字段时,按字段先后顺序排优先级。

以上的示例中,我们只使用了两个字段,下面使用三个字段验证一下这个规则。

按sAge升序、sGrade降序、sStuId降序查询

示例语句Sql_4:SELECT * FROM students st ORDER BY st.sAge ASC, st.sGrade DESC, st.sStuId DESC;

查询结果集:

显然,前两个字段排列顺序确定后,sStuId值没有按降序排列

按sAge升序、sStuId降序、sGrade降序查询

示例语句Sql_5:SELECT * FROM students st ORDER BY st.sAge ASC, st.sStuId DESC, st.sGrade DESC;

查询结果集:

显然,前两个字段排列顺序确定后,sGrade值没有按降序排列

比较Sql_4与Sql_5语句的区别,再对比查询结果集,慢慢体会这两个差异点。

总结

(1)在MySql中,使用 ASC 或 DESC 关键字来设置查询结果是按升序或降序排列。

(2)尤其非常特别重要:默认按升序(ASC)排列。

(3)order by 后可加2个(或多个)字段,字段之间用英文逗号隔开。

(4)若A用升序,B用降序,SQL该这样写:order by A ASC, B DESC; 默认同理,也可以这样写:order by A, B DESC;

(5)若A、B都用降序,必须用两个DESC,order by A DESC, B DESC;

(6)多个字段时,优先级按先后顺序而定。语法:SELECT * FROM 表名 ORDER BY 字段名 ASC, 字段名 DESC;

或语法:SELECT * FROM 表名 ORDER BY 字段名 DESC, 字段名 DESC;

多个字段用英文(,)隔开

mysql中grade字段降序排列_Mysql order by 多个字段排序相关推荐

  1. mysql中grade字段降序排列_mysql高级查询

    [聚合函数] 统计记录的条数 select count(*) from 表名; 求某个字段所有值的总和 select sum(字段名) from 表名; 求某个字段所有值的平均值 select avg ...

  2. oracle中部门工资降序排列,oracle面试题整理二(10级学员 乔宇整理)

    Oracle面试题整理二(10级学员 乔宇整理) 1.查询工资最高的3 名员工信息 select * from (select * from emp order by sal desc) where ...

  3. MySQL中的升序降序以及字段的升序降序

    MySQL中 升序为asc 降序为desc 例如: 升序:select   *  from  表名 order by  表中的字段 asc(MySQL中默认是升序排列,可不写) : 降序:select ...

  4. mysql按课程报名人数排序_sql 语句排序 在查询结果中按人数降序排列,若人数相同,则按课程号升序排列?...

    展开全部 代码如下: select xuehao as 学号,score as 总成绩 from CJBwhere xuehao in( select xuehao from XSB) group b ...

  5. mysql按专业人数升序查询_sql 语句排序 在查询结果中按人数降序排列,若人数相同,则按课程号升序排列?...

    代码如下: select xuehao as 学号,score as 总成绩 from CJBwhere xuehao in( select xuehao from XSB) group by xue ...

  6. Java中对数组降序排列

    Integer[] arry = {2,6,3,7,8,5,9};/*底层原理利用插入排序+二分查找算法进行排序默认把0索引的数据当作是有序序列,1索引到最后认为是无序的遍历无序的序列得到里面的每一个 ...

  7. 编写 SQL 查询表格,按创建时间降序排列。

    编写 SQL 查询表格,按创建时间降序排列 SELECT [表格名.字段名1][表格名.字段名2]....... FROM [表格名1],[表格名2](中文括号不需要输入,该行后方无需加英文标点,表格 ...

  8. Excel 2010 SQL应用016 降序排列

    目录 源数据表,降序排列 解决方案 ORDER BY子句的使用 源数据表,降序排列 姓名 班级 语文成绩 陈惠婷 五(1)班 75 潘智凤 五(1)班 48 王小丹 五(1)班 55  赖晓红 五(1 ...

  9. Mysql中的升序和降序以及一个字段升序和一个字段降序

    [Mysql中的升序和降序以及一个字段升序和一个字段降序](https://www.wuhaiqiao.com/2020/304.html)

  10. python降序排列说true不存在_Python数据类型串讲(中)

    1.序列 1.1 序列简介 所谓序列,即元素的有序排列.序列中每个位置的元素都有其对应的唯一编号,也就是说我们可以通过元素的位置标识,去搜索到该元素.python中的内建序列有6种:列表.元祖.字符串 ...

最新文章

  1. 路由器连接帧中继网络的接口是(11),连接双绞线以太网的接口是(12)。 【答案】D B
  2. python arp脚本_Python scapy 实现一个简易 arp 攻击脚本
  3. mac ox 10.9 安装eclipse j2ee 集成配置JDK1.6
  4. f12控制台如何查看consul_Consul初探-从安装到运行
  5. easyui datagrid
  6. 异常的分级分类与处理策略
  7. 关于凸优化的一些简单概念
  8. java实现base64加密解密
  9. python在函数内部有没有办法定义全局变量_主函数内部的全局变量python
  10. java8的spliterator
  11. 抖音诉腾讯不正当竞争案撤诉;微信更新,表情包上限999个;PyTorch 1.8.1 发布 | 极客头条...
  12. 【李宏毅2020 ML/DL】P66 Self-supervised Learning
  13. springboot vue组件写的个人博客系统
  14. 干货文:企业 IT 基础架构|(精华篇)
  15. 【设计模式】工厂模式
  16. 【AD封装】插件电感,变压器(带3D)
  17. zoj 2476 Total Amount
  18. 计算机专用英语词汇1500词
  19. Java基础知识(七) 输入输出流
  20. python六芒星怎么画_Python Turtle绘画初学编程——六芒星,浪形圈

热门文章

  1. 1114 Family Property (25 分)
  2. Linux——tmux和vim常用命令总结(必会)
  3. spark 集群搭建 详细步骤
  4. C#网络编程----文件流
  5. 哪里有c语言在线编程题,在线求C语言编程题答案。。。
  6. java8 时间加一秒_好好讲讲关于Java中的时间处理
  7. 晨风机器人php接口程序_微信之后,QQ也开始封杀机器人了!!!
  8. IIS7.5应用程序池集成模式和经典模式的区别介绍
  9. 图:用PPT为湖北黄石某电视台及其有线电视定制的知识竞赛题库
  10. git tag 使用方法(打标签、发布及回滚)