質問

データベースのバックアップから、一意のIDのないレコードがあります。

一部のレコードには一意のIDがあります。 重複したIDを持つ一部のレコードには、異なるDateCreated値が含まれます。 重複したIDを持つ一部のレコードには、同じ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)

ie、つまり、同じIDで作成日が遅い別の行がある行を削除します。

他のヒント

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
ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top