You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

MySQL中如何按date_post分组筛选date_complete最新的行?

按date_post分组筛选每组最新date_complete的所有行(MySQL实现)

我有一张data表,原始数据如下:

date_postdate_complete
2023-11-282023-12-04
2023-11-282023-12-04
2023-11-282023-12-05
2023-11-282023-12-05
2023-11-292023-12-06
2023-11-292023-12-06
2023-11-292023-12-07
2023-11-292023-12-07

需要筛选出按date_post分组后,每组中date_complete值最新的所有行,目标结果如下:

date_postdate_complete
2023-11-282023-12-05
2023-11-282023-12-05
2023-11-292023-12-07
2023-11-292023-12-07

这个需求完全可以实现,下面提供两种实用的MySQL实现方法:

方法一:子查询关联法(兼容所有MySQL版本)

SELECT d.*
FROM data d
INNER JOIN (
    SELECT date_post, MAX(date_complete) AS latest_complete
    FROM data
    GROUP BY date_post
) t ON d.date_post = t.date_post AND d.date_complete = t.latest_complete;

逻辑:先通过子查询按date_post分组,计算出每组的最大date_complete值;再将原表与子查询结果关联,筛选出匹配分组且完成日期等于组内最大值的所有行。

方法二:窗口函数法(MySQL 8.0及以上版本适用)

如果你的MySQL版本是8.0或更高,用窗口函数会更简洁直观:

SELECT date_post, date_complete
FROM (
    SELECT 
        date_post, 
        date_complete,
        RANK() OVER (PARTITION BY date_post ORDER BY date_complete DESC) AS rnk
    FROM data
) t
WHERE rnk = 1;

逻辑:用PARTITION BY date_post按发布日期分组,ORDER BY date_complete DESC给每组内的行按完成日期倒序排名;排名为1的就是每组最新的行,直接筛选即可。

内容的提问来源于stack exchange,提问作者Cristino

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.03 21:27:46