如何在SQL中找到重复的条目并删除最旧的条目?

我有一个表,除了一列中的一个值外,它们都是唯一的行(我们称之为’Name’).另一列是’Date’,它是添加到数据库的日期.

我想要做的是在“名称”中找到重复的值,然后删除“日期”中具有最早日期的那些,留下最新的日期.

看起来像一个相对简单的查询,但除了简单的查询,我对SQL知之甚少.

有任何想法吗?

最佳答案
查找重复项并删除最旧的项

这是守则

create table #Product (
    ID      int identity(1, 1) primary key,
    Name        varchar(800),
    DateAdded   datetime default getdate()
)

insert  #Product(Name) select 'Chocolate'
insert  #Product(Name,DateAdded) select 'Candy', GETDATE() + 1
insert  #Product(Name,DateAdded) select 'Chocolate', GETDATE() + 5
select * from #Product

;with Ranked as (
    select  ID, 
        dense_rank() 
        over (partition by Name order by DateAdded desc) as DupeCount
    from    #Product P
)
delete  R
from    Ranked R
where   R.DupeCount > 1

select * from #Product

转载注明原文:如何在SQL中找到重复的条目并删除最旧的条目? - 代码日志