Einzelnen Beitrag anzeigen

Benutzerbild von himitsu
himitsu

Registriert seit: 11. Okt 2003
Ort: Elbflorenz
43.177 Beiträge
 
Delphi 12 Athens
 
#5

AW: Doppelte Datensätze löschen

  Alt 23. Feb 2015, 17:58
SQL-Code:
select ID
from TBL_PATDIAGNOSE
where (
  select count(*) > 1
  from TBL_PATDIAGNOSE AS x
  where x.Patientnr = TBL_PATDIAGNOSE.Patientnr
    and x.Datum = TBL_PATDIAGNOSE.Datum
    and x.Suchwort = TBL_PATDIAGNOSE.Suchwort
    and x.Anlage = TBL_PATDIAGNOSE.Anlage
)
oder
SQL-Code:
select ID
from TBL_PATDIAGNOSE
where exists(
  select true
  from TBL_PATDIAGNOSE AS x
  where x.ID <> TBL_PATDIAGNOSE.ID
    and x.Patientnr = TBL_PATDIAGNOSE.Patientnr
    and x.Datum = TBL_PATDIAGNOSE.Datum
    and x.Suchwort = TBL_PATDIAGNOSE.Suchwort
    and x.Anlage = TBL_PATDIAGNOSE.Anlage
)

Und jetzt das ganze nur noch als where ID in (...) für das DELETE-Statement verwenden, aber vorer solltest du noch mindestens jeweils einen der Datensätze in einem der WHERE ausschließen ... und zwar jeweils Jenen, welchen du behalten willst, ansonsten sind wirklich alle Doppelten weg.


Oder so wie Union, der aber ruhig noch einen UNION hätte einbauen können

Der Vorteil bei "meinem" ist, daß man Dieses auch verwenden kann, um vorher zu Gucken, was man löschen würde ... falls man das mal wissen will.
Garbage Collector ... Delphianer erzeugen keinen Müll, also brauchen sie auch keinen Müllsucher.
my Delphi wish list : BugReports/FeatureRequests

Geändert von himitsu (23. Feb 2015 um 18:02 Uhr)
  Mit Zitat antworten Zitat