mysql先排序后group by

取出所有最近发生的事件,相同的事件只取最新的一条。
在这里插入图片描述
也就是说,这里面name为a的这条数据,要取最后一条的a,因为最后一条的a的time距离当前最近。
mysql语句:

SELECT * 
FROM `event` as a
WHERE time = (
    SELECT max(time) FROM event as b
		WHERE b.`name` = a.`name`
    GROUP BY `name`
);

返回结果:
在这里插入图片描述

参考资料:
https://segmentfault.com/q/1010000011383702

第二种实现方式:

SELECT name,substring_index(GROUP_CONCAT(num ORDER BY time desc),',',1) as num
from risk_events 
inner
JOIN event_define on event_define.`code` = risk_events.event_code
GROUP BY `event_code`;

TODO:原理待分析

发布了116 篇原创文章 · 获赞 12 · 访问量 99万+

猜你喜欢

转载自blog.csdn.net/u012628581/article/details/102918125