mysql 取组内最值记录
描述
功能要求和以前的一片文章类似:hive取组内最值
在新的工作环境中,使用的数据库是mysql 5.5版本。不支持开窗函数的使用
因此在解决这个问题的时候需要新的思路。
方法
我最钦佩的方法当属此文:MySQL去重保留最大的那条记录(取最新的记录)
文章使用了自关联的方法。关联条件是组名相等,最值列采用不等关系。筛选出关联结果为空的行,即为最值记录。
这种写法语法简明,符合MapReduce的思想,因此查询速度也极佳。风险点可能在于,该种语法对内存占用较高,当数据量极大时存在溢出风险。
举例
我现在有一份日历表,其数据列有如下
现在我要取出这份日历里面每个星期几的最后一个日期
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
得到结果