Entfernen Sie nicht eindeutige IDs Reihen
-
03-07-2019 - |
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
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