MySQL 取出每个分组中最新的一条数据(ID最大)
场景:由于一个摄像头管理一个范围,且管理的某个人可以多次犯规。故,一个摄像头可以上报有多个事件,多个事件可能同时上报,可能有先后顺序。
需求:现地图只显示有事件摄像头的最新一条事件信息,故,需要ID倒序后,以摄像头分组,以此获得摄像头最新的一条事件信息。(这里以ID倒序而不以创建时间倒序,是有一定优势的)。
思路:先ID(时间)倒序,后分组。
SELECT t.id,t.camera_id,t.create_time FROM
(SELECT e.* FROM sys_enforce_event e LEFT JOIN sys_dict_node n ON e.node_id = n.id
WHERE e.is_deleted = 0 AND e.source_id = 2 ORDER BY e.id DESC ) t
GROUP BY t.camera_id
注意事项:此方式仅支持低于5.7版本的MySql(SELECT VERSION();)
关于高于5.7版本的,可在排序后添加limit 999999,即可为最新一条。
SELECT t.id,t.camera_id,t.create_time FROM
(SELECT e.* FROM sys_enforce_event e LEFT JOIN sys_dict_node n ON e.node_id = n.id
WHERE e.is_deleted = 0 AND e.source_id = 2 ORDER BY e.id DESC limit 999999 ) t
GROUP BY t.camera_id
还没有评论,来说两句吧...