【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的用法

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