Удаление строк неуникальных идентификаторов
-
03-07-2019 - |
Вопрос
Из резервной копии базы данных у меня есть записи без уникальных идентификаторов.
Некоторые записи имеют уникальные идентификаторы.Некоторые записи с дублирующимися идентификаторами содержат разные значения, созданные 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
Справка
Решение
DELETE FROM myTable AS t1
WHERE EXISTS (
SELECT 1 FROM myTable AS t2
WHERE t1.ID=t2.ID AND t1.DateCreated<t2.DateCreated)
т.е. удалите любую строку, где есть другая строка с тем же идентификатором и более поздней датой создания.
Другие советы
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
Не связан с StackOverflow