sql 查询 group by分组 后 获得每组中时间最大 记录

直接上最终sql

id为数据唯一键,storage_time为时间戳,application_matters为分组依据

SELECT
    * 
FROM
    csrc_approved_products_weekly 
WHERE
    id IN ( 
                SELECT SUBSTRING_INDEX(group_concat( id ORDER BY `storage_time` DESC ), ',', 1 ) 
                FROM csrc_approved_products_weekly
                GROUP BY application_matters
    )

解析

1.按时间从大到小顺序取出唯一键id列表

SELECT
    group_concat( id ORDER BY `storage_time` DESC ) 
FROM
    csrc_approved_products_weekly 
GROUP BY
    application_matters

2.再用SUBSTRING_INDEX函数取出第一个(也就是时间最大的数据id)

SELECT
    SUBSTRING_INDEX( group_concat( id ORDER BY `storage_time` DESC ), ',', 1 ) 
FROM
    csrc_approved_products_weekly 
GROUP BY
    application_matters

 3.再根据 id查询数据
 

SELECT
    * 
FROM
    csrc_approved_products_weekly 
WHERE
    id IN ( 
                SELECT SUBSTRING_INDEX( group_concat( id ORDER BY `storage_time` DESC ), ',', 1 ) 
                FROM csrc_approved_products_weekly 
                GROUP BY application_matters
    )


版权声明:本文为czc9309原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接和本声明。