Wor*_*_It 0 sql sql-server-2005
仅从表中查找和更新重复记录的最佳方法是什么.例如,下面的记录被认为是重复记录,只有ID使它们成为唯一的.我需要将记录2和3活动字段更新为0而不是1,并将日期设置为getdate().我需要这些副本的第一个实例(ID 1)不更新.我有一个表有数千个这种情况,需要停用重复记录.
有任何想法吗?
acct_plan表:
ID act plan active date
1 123 blue 1 NULL
2 123 blue 1 NULL
3 123 blue 1 NULL
Run Code Online (Sandbox Code Playgroud)
在此先感谢您的帮助!:)
我喜欢使用以下CTE来解决这类问题:
with toupdate as (
select ap.*,
row_number() over (partition by act, plan, active, date
order by id
) as seqnum
from acct_plan
)
update toupdate
set date = getdate(),
active = 0
where seqnum > 1;
Run Code Online (Sandbox Code Playgroud)
这是SQL Server支持的语法,但通常不适用于其他数据库.