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

MySQL如何查询重复值仅返回1条 优先取对应日期最新的记录

MySQL 去重保留最新日期行查询方案

假设你的表名为fruit_records,可根据实际表名替换。

方案1:MySQL 8.0及以上版本(推荐)

使用窗口函数实现,逻辑清晰效率高:

SELECT id, fruit, `date`
FROM (
    SELECT 
        *,
        ROW_NUMBER() OVER (PARTITION BY fruit ORDER BY `date` DESC) AS rn
    FROM fruit_records
) AS t
WHERE rn = 1;

逻辑说明:

  • 用PARTITION BY fruit将相同水果的记录划分为同一组
  • 每组内按date倒序排序,最新的日期排在最前
  • ROW_NUMBER()为每组内的行按排序结果生成序号
  • 筛选序号为1的行,即可得到每种水果最新日期的唯一记录

方案2:MySQL 5.x兼容方案

针对不支持窗口函数的低版本MySQL,可使用分组关联实现:

SELECT t1.id, t1.fruit, t1.`date`
FROM fruit_records t1
INNER JOIN (
    SELECT fruit, MAX(`date`) AS max_date
    FROM fruit_records
    GROUP BY fruit
) t2 ON t1.fruit = t2.fruit AND t1.`date` = t2.max_date;

逻辑说明:

  • 先通过子查询统计出每种水果对应的最大日期
  • 将原表和统计结果关联,匹配水果名称和对应的最大日期,即可得到每种水果最新的记录
  • 若同一种水果存在多条相同最大日期的记录,只需在查询末尾加上GROUP BY t1.fruit即可仅保留一条

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.06 03:00:04