使用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
相关产品推荐
相关产品推荐

