SQL UPDATE字段仅在重复记录上,初始实例不得更改

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)

在此先感谢您的帮助!:)

Gor*_*off 5

我喜欢使用以下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支持的语法,但通常不适用于其他数据库.