Ich habe eine Tabelle mit 3 Spalten wie folgt:Entfernen von doppelten Zeilen aus einer Tabelle in DB2 in einer einzigen Abfrage
one | two | three | name
------------------------------------
A1 B1 C1 xyz
A1 B1 C1 pqr -> should be deleted
A1 B1 C1 lmn -> should be deleted
A2 B2 C2 abc
A2 B2 C2 def -> should be deleted
A3 B3 C3 ghi
------------------------------------
Die Tabelle keine Primärschlüsselspalte aufweist. Ich habe keine Kontrolle über die Tabelle und kann daher keine Primärschlüsselspalte hinzufügen.
Wie gezeigt, möchte ich die Zeilen löschen, in denen die Kombination von einer, zwei und drei Spalte identisch ist. Wenn also A1B1C1 dreimal auftritt (wie beispielsweise oben), sollten die anderen zwei gelöscht werden, und nur einer sollte bleiben.
Wie erreichen Sie dies durch nur eine Abfrage in DB2?
Meine Anforderung ist für eine einzelne Abfrage, wie ich es durch ein Java-Programm ausführen würde.
Warum bevorzugen Sie xyz über {pqr, lmn} und abc über def? Die erste Präferenz ist zuerst alphabetisch sortiert, die zweite zuerst. macht keinen Sinn für mich. – wildplasser
@WildPlasser: Name Spalte spielt keine Rolle in weiteren Schritten. Also gibt es keine solche Präferenz ... jede zwei könnte gelöscht werden. – Nik