2009-03-03 4 views
5

Из резервной копии базы данных У меня есть записи без уникальных идентификаторов.Удаление неистовых строк идентификаторов

Некоторые записи имеют уникальные идентификаторы. Некоторые записи с дублирующимися идентификаторами содержат разные значения DateCreated. Некоторые записи с дублирующимися идентификаторами содержат те же значения DateCreated.

Я пытаюсь получить запрос MSSql 2005, оставит только уникальные значения ID с самым последним значением DateCreated.

От

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 

Помощь

ответ

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

т.е. удалить все строки, где есть еще один ряд с тем же идентификатором и более поздней датой создания.

0
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 
Смежные вопросы