看了很多分组之后获取最大值的sql博客,真的是满心欢喜,一试就凉
,还得自食其力。
一、目标
简单的三个字段,id
,rid
,online_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的用法