UNION ALL和order by 的关系,group by 和字段的关系,以及MAX函数
Posted buwuliao
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了UNION ALL和order by 的关系,group by 和字段的关系,以及MAX函数相关的知识,希望对你有一定的参考价值。
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 上一步的数据,就得到了最终结果;
以上是关于UNION ALL和order by 的关系,group by 和字段的关系,以及MAX函数的主要内容,如果未能解决你的问题,请参考以下文章
在 MySQL 中使用 Union All 和 Order By
UNION ALL、TEXT 字段和 ORDER BY 错误