Einzelnen Beitrag anzeigen

Benutzerbild von himitsu
himitsu
Online

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

AW: Doppelte Datensätze löschen

  Alt 23. Feb 2015, 18: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.
Neuste Erkenntnis:
Seit Pos einen dritten Parameter hat,
wird PoSex im Delphi viel seltener praktiziert.

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