Löschen Sie doppelte Datensätze mit rownum in SQL
Bitte helfen Sie mir zu wissen, ob Löschdatensätze basierend auf dem Rownum vorhanden sind, bei dem sogar die ID doppelt vorhanden ist. In diesem Fall wird dies jedoch nicht passieren.
select rownum,a.* from a;
ROWNUM ID NAME
---------- ---------- ----------
1 1 leo_1
2 2 leo_2
3 3 leo_3
4 1 leo_1
5 2 leo_2
6 3 leo_3
Abfrage versucht, löscht jedoch alle 6 Zeilen.
DELETE FROM a
WHERE rownum not in
(SELECT MIN(rownum)
FROM a
GROUP BY name);
Diese Abfrage liefert jedoch das richtige Ergebnis:
SELECT MIN(rownum)
FROM a
GROUP BY name
ROWNUM
----------
1
2
3
Erwartetes Ergebnis :
ROWNUM ID NAME
---------- ---------- ----------
4 1 leo_1
5 2 leo_2
6 3 leo_3