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

使用ROW_NUMBER()在关联表中删除重复记录的问题求助

删除Records表重复记录(保留最早创建时间)的问题与解决过程

我在删除Records表中的重复记录时遇到困难,需求是保留创建时间最早的记录,删除所有较新记录,但记录的创建日期存储在关联的ImportHistory表中。

我尝试编写的SQL语句如下:

DELETE x
FROM (
    SELECT
        ROW_NUMBER() OVER (
            PARTITION BY rec.RecordID 
            ORDER BY imp.CompletedOn DESC
        ) AS DupNum
        , rec.*
    FROM Records AS rec
    JOIN ImportHistory AS imp ON rec.ImportID = imp.ImportID
) AS x
WHERE x.DupNum > 1;

但该方法无法生效,因为别名x关联了多个表;将第一行改为DELETE rec也不生效,因为rec在当前上下文未定义。

我还考虑过将需保留的记录存入临时表,删除主表重复记录后再导回,但也遇到了问题。我知道在Records表添加CompletedOn列可解决问题,但尽量避免修改表结构。

编辑补充:
我们发现基础数据存在其他问题,最终修改基础表生成自定义主键。过程繁琐但必要,之后删除重复记录变得容易。感谢大家的帮助。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.02 06:12:12