码迷,mamicode.com
首页 > 其他好文 > 详细

UNION ALL和order by 的关系,group by 和字段的关系,以及MAX函数

时间:2020-01-06 14:29:48      阅读:99      评论:0      收藏:0      [点我收藏+]

标签:png   paste   mysq   子查询   detail   sql   group   表示   现在   

1、UNION ALL 和 ORDER BY的关系

  • 默认是对 UNION ALL 的结果进行排序

@坚果云附件 UNION ALL 排序问题.xmind - 坚果云

技术图片

2、GROUP BY 和 ORDER BY的关系

参考:mysql group by 排序问题_闷声发大财 - CSDN 博客

原始数据:

技术图片

2.1、ORDER BY 默认是对 GROUP BY 的结果进行排序

结果如下:无论根据什么字段进行排序,排序的数据ID都为1、2。表示GROUP BY选取的结果始终是一致的,ORDER BY 只对该结果排序。

技术图片

2.2、MAX()函数只取该列的最大值,并非最大值对应的一行。

  • 如果只是取某个字段种的最大或者最小值,可以使用MAX()函数。同时该字段可以不必出现在GROUP BY 之后。
  • 为什么不是最大值对应的一行,因为10和13对应的ID分别为9和12

技术图片-

原理:相当于是在 GROUP BY 后选出本组的最大,对分组没有起到任何影响!

2.3、使用子查询,完美解决

注:MYSQL5.7 版本的子查询的排序需要加 LIMIT 排序才有效

如下:

  • 第二条没生效,第三条生效是因为Mysql版本问题,请知悉。

技术图片

2.4 子查询的替代方案

方案一:

mysql group by 组内排序方法_傲雪星枫 - CSDN 博客

如果我们是想找到某一行对应的数据。那么可以分多步执行

  • 1、使用MAX函数,找到需要的行的ID;
  • 2、使用right join 上一步的数据,就得到了最终结果;

UNION ALL和order by 的关系,group by 和字段的关系,以及MAX函数

标签:png   paste   mysq   子查询   detail   sql   group   表示   现在   

原文地址:https://www.cnblogs.com/buwuliao/p/12155921.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!