如何使用完全相同的数据从 Oracle SQL 中删除多行

How to delete mutiple rows from Oracle SQL with exact same data

我关注table:-

CREATE TABLE DATA 
(   
"FName" VARCHAR2(30 CHAR) NOT NULL ENABLE, 
"LName" VARCHAR2(30 CHAR) NOT NULL ENABLE, 
"BIRTH_DATE" DATE, 
"USERNAME" VARCHAR2(50 CHAR), 
"EXTRA_INFO" VARCHAR2(2000 CHAR), 
"START_DATE" DATE DEFAULT sysdate
);

此 table 的数据为:

FName    LName   BIRTH_DATE   EXTRA_INFO   START_DATE

aaa      bbbb    01.01.1980   extra        01.01.2000
aaa      bbbb    01.01.1980   extra        01.01.2000     
aaa      bbbb    01.01.1980   extra        01.01.2000 
fname    lname   02.02.1970   something    02.02.1990          

所以我想多次删除所有具有完全相同条目的行。如何通过 SQL 查询删除它们?

这是一种选择:

SQL> select * from data;

FNAME      LNAME      BIRTH_DATE EXTRA_INFO
---------- ---------- ---------- ----------
aaa        bbb        01.01.1980 extra
aaa        bbb        01.01.1980 extra
aaa        bbb        01.01.1980 extra
fna        ccx        02.02.1970 smthi

SQL> delete from data a
  2  where rowid > (select min(rowid)
  3                 from data b
  4                 where a.fname      = b.fname
  5                   and a.lname      = b.lname
  6                   and a.birth_date = b.birth_date
  7                   and a.extra_info = b.extra_info
  8                );

2 rows deleted.

SQL> select * From data;

FNAME      LNAME      BIRTH_DATE EXTRA_INFO
---------- ---------- ---------- ----------
aaa        bbb        01.01.1980 extra
fna        ccx        02.02.1970 smthi

SQL>