看了很多分組之後獲取最大值的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的用法