【MySQL】SQL分组取最大值的方法

看了很多分组之后获取最大值的sql博客,真的是满心欢喜,一试就凉,还得自食其力。

一、目标

简单的三个字段,idridonline_date,目前就是想根据rid进行分组,取online_date中的最大值,

在这里插入图片描述

二、错误思路

最开始想的方法就是根据rid进行group by,然后用id进行倒序,来获取最大值,后来发现group by之后又随机排序了,无法获得目标值。

SELECT id,rid,ONLINE_DATE 
FROM (SELECT * FROM `rg_rule_online_record` ORDER BY rid,id DESC)e 
GROUP BY rid ;

后来尝试使用最大值max关联,好像也是不对。

三、正确方法

最后放弃group by ,使用exists,豁然开朗

SELECT * FROM rg_rule_online_record e WHERE NOT EXISTS(SELECT 1 FROM rg_rule_online_record f WHERE f.`ONLINE_DATE`>e.ONLINE_DATE AND e.rid = f.rid);

至于不会使用 exists的看一下这个【MySQL】sql中exists,not exists的用法

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章