Doppelte Einträge - einen löschen

PetraSteiner

Fleissiger Benutzer
Beiträge
60
Hallo zusammen,

ich blicke es nicht mehr.
Meine Tabelle sieht ungefähr so aus:

Code:
ID,Bearbeitungsnr, Name, Ankunft, Abfahrt, created_at
1, 121298,PlattformA, 08:55, "", 01.01.2020 08:00
2, 121298,PlattformA,"", 09:10, 01.01.2020 09:00
3, 121221,Fahrgestell, 09:10,"", 01.01.2020 09:00
4, 121222,PlattformC, 09:10,09:20, 01.01.2020 09:00
5, 121222,PlattformC, "",09:20, 01.01.2020 10:00

Der erste und zweite Datensatz und Nr. 4+5 ist jetzt aus meiner Sicht doppelt.
Er hat die gleiche Bearbeitungsnummer. Ich will den späteren Datensatz um 09:00 Uhr löschen.
Ich bekomme es hin eine Abfrage zu erstellen, die mir alle Datensätze bereinigt anzeigt.
Bin aber zu doof den zweiten Datensatz so zu filtern, dass ich ihn löschen kann.
Hat mir bitte jemand einen Ansatz, wie ich die 2 und die 5 angezeigt bekomme?
Mein Ansatz war erst, alle Datensätze anzuzeigen z.B. mit having count(Bearbeitungsnr) > 1 die mehrfach vorkommen. Und daraus den Max-Wert von created_at dann zu ziehen.
Da lande ich aber in der Sackgasse, weil die ID fehlt. Wenn ich die ins Spiel bringe wird nichts mehr gruppiert.....
 
Werbung:
Sowas macht man typischerweise mit einer EXISTS Bedingung:

Code:
delete from petra p1
where exists (select *
             from petra p2
             where p2.Bearbeitungsnr = p1.Bearbeitungsnr
               and p2.id <> p1.id
               and p2.created_at < p1.created_at);

Das bedeutet: "lösche alle Datensätze für die es mindestens einen anderen Datensatz gibt bei dem die Bearbeitungsnummer die gleiche ist, der aber früher erstellt wurde" - damit wird dann der spätere gelöscht.
 
Werbung:
Zurück
Oben