我有一个表,除了一列中的一个值外,它们都是唯一的行(我们称之为'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
从存在的表a1中删除(从表a2中选择*,其中a2.name = a1.name和a2.date> a1.date)