zoukankan      html  css  js  c++  java
  • mysql order by 多个字段排序实现组内排序

    总结:大组在前,小组在后,计量值再最后,即可实现组内排序;下边是参考别人的具体实例:

    工作中需用到order by 后两个字段排序,但结果却产生了一个Bug,以此备录。

    【1】复现问题场景

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

    如下语句Sql_1:

    1 SELECT * FROM students st ORDER BY st.sAge, st.sGrade DESC;

    (1)预期结果:

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

    (2)实际结果:

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

    (3)分析原因:

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

    【2】默认升序

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

    示例语句Sql_2:

    1 SELECT * FROM students st ORDER BY st.sAge;

    查询结果集:

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

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

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

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

    示例语句Sql_3:

    1 SELECT * FROM students st ORDER BY st.sAge DESC, st.sGrade DESC;

    查询结果集:

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

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

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

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

    (1)按sAge升序、sGrade降序、sStuId降序查询

    示例语句Sql_4:

    1 SELECT * FROM students st ORDER BY st.sAge ASC, st.sGrade DESC, st.sStuId DESC;

    查询结果集:

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

    (2)按sAge升序、sStuId降序、sGrade降序查询

    示例语句Sql_5:

    1 SELECT * FROM students st ORDER BY st.sAge ASC, st.sStuId DESC, st.sGrade DESC;

    查询结果集:

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

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

    【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)多个字段时,优先级按先后顺序而定。

    参考:https://www.cnblogs.com/Braveliu/p/10654091.html

  • 相关阅读:
    maxsdk sample中3dsexp.rc点不开并提示specstrings.h中找不到sal.h解法
    安装max plugin wizard
    max plugin wizard,project creation faild解法
    unity, 由5.2.1f1升级到5.3.5f1,2d物理不正常解法
    maxscript,#号和$号
    maxscript,执行选中代码片段
    maxscript,MAXScript Listener下输入print "hi"为什么输出两次
    editplus查找替换的正则表达式应用
    命令行创建畸形文件夹+畸形目录管理工具(DeformityPath)
    费曼技巧——高速学习的方法
  • 原文地址:https://www.cnblogs.com/Formulate0303/p/11962213.html
Copyright © 2011-2022 走看看