mysql 取组内最值记录

描述

功能要求和以前的一片文章类似:hive取组内最值

在新的工作环境中,使用的数据库是mysql 5.5版本。不支持开窗函数的使用

因此在解决这个问题的时候需要新的思路。

方法

我最钦佩的方法当属此文:MySQL去重保留最大的那条记录(取最新的记录)

文章使用了自关联的方法。关联条件是组名相等,最值列采用不等关系。筛选出关联结果为空的行,即为最值记录。
这种写法语法简明,符合MapReduce的思想,因此查询速度也极佳。风险点可能在于,该种语法对内存占用较高,当数据量极大时存在溢出风险。

举例

我现在有一份日历表,其数据列有如下
image

现在我要取出这份日历里面每个星期几的最后一个日期

SELECT 
a.*
FROM `tmp_calendar` a
left join tmp_calendar b on a.WEEK_DESC=b.WEEK_DESC and a.DAY_SHORT_DESC<b.DAY_SHORT_DESC
where b.DAY_ID is null

得到结果
image

posted @ 2022-01-21 10:36  菲克纽斯  阅读(65)  评论(0编辑  收藏  举报