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

关于按ID获取最大日期并去除重复数据的SQL问询

解决SQL去重并按id取最大date的问题

嘿,我来帮你把这个SQL语句补全并优化一下~

首先看你原来的语句,有几个小问题需要修正:

  • 子查询里把字段名date写成data了,应该是MAX(date)
  • 连接条件里的tt.data也写错了,要改成tt.date
  • 最后连接条件的结尾没写完,应该是groupedtt.lastDate

修正后的基础版本SQL

这个版本会找出每个id对应的最大date的所有记录(如果有重复的相同id+max date的记录,会全部返回):

SELECT tt.* 
FROM data tt 
INNER JOIN (
    SELECT id, MAX(date) AS lastDate 
    FROM data 
    GROUP BY id
) groupedtt ON tt.id = groupedtt.id AND tt.date = groupedtt.lastDate;

更稳妥的去重版本(确保每个id只返回一条)

如果你的需求是每个id只保留一条最大date的记录,哪怕有多个相同的max date,用窗口函数会更可靠:

SELECT id, date
FROM (
    SELECT 
        id, 
        date,
        -- 按id分组,每组内按date倒序排,给每条记录标序号
        ROW_NUMBER() OVER (PARTITION BY id ORDER BY date DESC) AS rn
    FROM data
) t
-- 只取每组的第一条(也就是date最大的那条)
WHERE rn = 1;

这个窗口函数的方法不仅能自动去除重复数据,还能保证每个id只返回一条结果,比第一种方法更灵活,后续如果表中新增其他字段,也能轻松扩展筛选逻辑。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.26 08:53:54