从给定 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
);
我有一个名为“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
);