Frage

Von einer Datenbanksicherung I Aufzeichnungen ohne eindeutige Ids haben.

Einige Datensätze haben eindeutige IDs. Einige Datensätze mit duplizierten IDs enthält verschiedene Werte Datecreated. Einige Datensätze mit duplizierten IDs enthält die gleichen Werte Datecreated.

Ich versuche, eine MSSql 2005 Abfrage erhalten wird nur eindeutige ID-Werte mit dem jüngsten Wert verlassen Datecreated.

Von

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

Hilfe

War es hilfreich?

Lösung

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

dh löschen jede Zeile, in der es eine weitere Reihe mit derselben ID und einem späteren Erstellungsdatum.

Andere Tipps

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
Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top