MySQL 取出每个分组中最新的一条数据(ID最大)

£神魔★判官ぃ 2023-10-07 23:01 57阅读 0赞

场景:由于一个摄像头管理一个范围,且管理的某个人可以多次犯规。故,一个摄像头可以上报有多个事件,多个事件可能同时上报,可能有先后顺序。

需求:现地图只显示有事件摄像头的最新一条事件信息,故,需要ID倒序后,以摄像头分组,以此获得摄像头最新的一条事件信息。(这里以ID倒序而不以创建时间倒序,是有一定优势的)。

思路:先ID(时间)倒序,后分组。

  1. SELECT t.id,t.camera_id,t.create_time FROM
  2. (SELECT e.* FROM sys_enforce_event e LEFT JOIN sys_dict_node n ON e.node_id = n.id
  3. WHERE e.is_deleted = 0 AND e.source_id = 2 ORDER BY e.id DESC ) t
  4. GROUP BY t.camera_id

注意事项:此方式仅支持低于5.7版本的MySql(SELECT VERSION();)

关于高于5.7版本的,可在排序后添加limit 999999,即可为最新一条。

  1. SELECT t.id,t.camera_id,t.create_time FROM
  2. (SELECT e.* FROM sys_enforce_event e LEFT JOIN sys_dict_node n ON e.node_id = n.id
  3. WHERE e.is_deleted = 0 AND e.source_id = 2 ORDER BY e.id DESC limit 999999 ) t
  4. GROUP BY t.camera_id

发表评论

表情:
评论列表 (有 0 条评论,57人围观)

还没有评论,来说两句吧...

相关阅读