从给定 table 中删除重复项

Delete duplicates from given table

我有一个名为“TABLE1”的table,只有几列

CREATE TABLE TABLE1 ( PAN_ID VARCHAR2(2)      NOT NULL, 
                      CODE VARCHAR2(3)      NULL, 
                      FROM_DT VARCHAR2(10)  NULL, 
                      FROM_TM VARCHAR2(8)   NULL, 
                      IMP_DT TIMESTAMP(3)   NULL );

CREATE UNIQUE INDEX INDEX1 ON TABLE1(PAN_ID, IMP_DT);
CREATE INDEX INDEX2 ON TABLE1(PAN_ID);

INSERT INTO TABLE1 VALUES('A1', 'ABC', '2021-07-12', '12:32:02', '09-AUG-21 12.00.00.000000000AM'); 
INSERT INTO TABLE1 VALUES('A1', 'ABC', '2021-07-12', '12:32:02', '');
INSERT INTO TABLE1 VALUES('B1', 'BCD', '2021-07-12', '12:32:01', '09-AUG-21 12.00.00.000000000AM');  
INSERT INTO TABLE1 VALUES('B1', 'BCD', '2021-07-12', '12:32:01', ''); 
INSERT INTO TABLE1 VALUES('C1', 'CDE', '2021-07-12', '12:31:58', '09-AUG-21 12.00.00.000000000AM');
INSERT INTO TABLE1 VALUES('C1', 'CDE', '2021-07-12', '12:31:58', ''); 

我有将近 400 个重复项,但我已经向您展示了样本行。

我想删除 TABLE1 中存在的重复项。我已使用以下查询删除重复项但无法删除重复项:

DELETE FROM TABLE1 T1 WHERE ROWID IN 
(
   SELECT CID FROM 
                 (
                    SELECT MAX(ROWID) AS CID FROM TABLE1 GROUP BY PAN_ID HAVING COUNT(*) > 1
                  )
);

以上是在 Oracle SQL 开发人员应用程序中使用的。我想删除有重复的行...例如在上面你可以看到 3 PAN_ID 重复了 2 次...不管 PAN_ID 出现了不止一次....我想删除那些条目...即根据上面的示例输入行,结果 table 应该为空...如果每个 PAN_ID 只有 1 行,那么我们不应该删除这些行.

试试这些

DELETE 
FROM 
    TABLE1 T1 
WHERE 
    ROWID > (
        SELECT 
            MIN(ROWID) 
        FROM  TABLE1 T2
        WHERE 
            T1.PAN_ID =T2.PAN_ID
        );