Mysql获取最新记录

前言

怎么获取Mysql表中同一标识(flag)下多条记录的最新记录呢?这里的宗旨是先order by time desc,其查询结果作为一个父表,然后再在父表中进行group by flag;这里值得注意的是,如果order by 与 group by在同一维表中的话,group by应该放在order by之前。

SQL示例

  • 对于多张维表
 select task.*
        from task_info task
        left join(
        select *
        from(
        select *
        from task_status 
        order by create_datetime desc) t
        group by t.task_id) status on task.id = status.task_id
        where
         locate(status.task_status, #{
    
    taskStatus}) > 0
        order by task.create_datetime, task.id desc
       
  • 对于单张维表
 select sub_talent_pool.*
        from (select * from pool
        where plan = #{
    
    plan}
        order by modify_time desc) sub_talent_pool
        group by sub_talent_pool.tree_structure_id, sub_talent_pool.into_pool_time
        order by sub_talent_pool.into_pool_time desc

总结

总而言之,子查询的按时间倒序的结果作为父表,外层查询再进行分组即可获取最新记录。

猜你喜欢

转载自blog.csdn.net/zhangxing52077/article/details/109381759