1、UNION ALL 和 ORDER BY的关系
- 默认是对 UNION ALL 的结果进行排序
@坚果云附件 UNION ALL 排序问题.xmind - 坚果云
2、GROUP BY 和 ORDER BY的关系
原始数据:
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 子查询的替代方案
方案一:
如果我们是想找到某一行对应的数据。那么可以分多步执行
- 1、使用MAX函数,找到需要的行的ID;
- 2、使用right join 上一步的数据,就得到了最终结果;
原文地址:https://www.cnblogs.com/buwuliao/p/12155921.html
时间: 2024-10-09 15:21:29