Ich habe eine Tabelle t1, die die folgend ähnelt:Wie entfernen doppelte Datensätze aus der Tabelle mit MAX-Funktion
first_name last_name row_number Bob Smith 1 Mike Jones 2 Mike Jones 3 Jessie Lee 4 Bob Smith 5 Jessie Lee 6
und ich mag Zeilen aus der Tabelle löschen, so dass jeder Name nur einmal aufgeführt wird und wird von seiner MAX-Zeilennummer begleitet.
Als solche ich die Ausgabe meiner Abfrage sein möchte:
first_name last_name row_number Mike Jones 3 Bob Smith 5 Jessie Lee 6
Die Abfrage, die ich mit aufkam ist:
DELETE FROM table t1 WHERE t1.row_number != (SELECT MAX(row_number) FROM table t2 WHERE t1.first_name = t2.first_name and t2.last_name = t2.last_name);
Diese Abfrage funktioniert nicht (es löscht einige Zeilen aber nicht die richtigen), aber ich verstehe nicht, was ich falsch mache. Wie kann ich diese Abfrage korrigieren, um die richtigen Zeilen zu löschen?
Sie sollten mit row_number nicht, aber Rowid. –