5

从数据库备份中,我有没有唯一 ID 的记录。

一些记录具有唯一的 ID。一些具有重复 ID 的记录包含不同的 DateCreated 值。一些具有重复 ID 的记录包含相同的 DateCreated 值。

我正在尝试获取 MSSql 2005 查询将只留下具有最​​新 DateCreated 值的唯一 ID 值。

ID|    DateCreated  
1 |    1/1/09
2 |    1/2/09
2 |    2/2/09
3 |    1/3/09
3 |    1/3/09

ID|    DateCreated  
1 |    1/1/09
2 |    2/2/09
3 |    1/3/09

帮助

4

2 回答 2

11
DELETE FROM myTable AS t1 
WHERE EXISTS (
    SELECT 1 FROM myTable AS t2 
    WHERE t1.ID=t2.ID AND t1.DateCreated<t2.DateCreated)

即,删除任何有另一行具有相同 id 和较晚创建日期的行。

于 2009-03-03T23:05:24.457 回答
1
create table #t ( id int, date datetime )

insert #t 
values(1, getdate())

insert #t 
values(1, getdate()+1)

insert #t 
values(1, getdate()-1)

insert #t 
values(2, getdate())

insert #t 
values(2, getdate()+1)

delete t 
from #t t
left join (select id, min(date) as date from #t group by id) as t1 
    on t.id = t1.id and t1.date = t.date
where t1.date is null
于 2009-03-03T23:12:52.363 回答