Oracle
 sql >> Datenbank >  >> RDS >> Oracle

Orakel | doppelte Datensätze löschen

Selbst wenn Sie den Primärschlüssel nicht haben, ist jedem Datensatz eine eindeutige Zeilen-ID zugeordnet.

Indem Sie die folgende Abfrage verwenden, löschen Sie nur die Datensätze, die nicht die maximale Zeilen-ID haben, indem Sie selbst einer Tabelle mit den Spalten beitreten, die eine Duplizierung verursachen. Dadurch wird sichergestellt, dass Sie alle Duplikate löschen.

DELETE FROM PPLP_LOAD_GENSTAT plg_outer
WHERE ROWID NOT IN(
  select   MAX(ROWID)
  from     PPLP_LOAD_GENSTAT plg_inner
  WHERE    plg_outer.pplp_name = plg_inner.pplg_name
  AND      plg_outer.start_time= plg_inner.start_time
  AND      plg_outer.end_time  = plg_inner.end_time
);