📜  如何删除Oracle数据库中的重复记录?

📅  最后修改于: 2022-05-13 01:54:55.580000             🧑  作者: Mango

如何删除Oracle数据库中的重复记录?

要删除重复记录,我们需要首先找到所有不同的记录。在重复记录中,除了 row_id之外的所有数据都相同,因为 row_id 是记录占用的物理地址。因此,我们找到每个列中数据不同的不同行 id,然后删除所有不在上述查询中的具有 row_id 的行。

在这里我们将看到,如何在 Oracle 中删除重复记录。出于演示的目的,我们将创建一个表格演示。

创建数据库:

首先,我们创建一个表并在其中填充数据,其中一些记录是重复的:

询问:

CREATE TABLE Demo( PersonID int, LastName varchar(255), FirstName varchar(255));
INSERT INTO Demo VALUES (1, 'Geek1', 'Geeksforgeeks');
INSERT INTO Demo VALUES (2, 'Geek2', 'Geeksforgeeks');
INSERT INTO Demo VALUES (3, 'Geek3', 'Geeksforgeeks');
INSERT INTO Demo VALUES (1, 'Geek1', 'Geeksforgeeks');
INSERT INTO Demo VALUES (2, 'Geek2', 'Geeksforgeeks');
INSERT INTO Demo VALUES (2, 'Geek2', 'Geeksforgeeks');

输出:



现在,我们将使用以下方法找到所有没有重复行的不同记录:

询问:

SELECT * FROM Demo 
WHERE rowid IN 
( SELECT MAX(rowid)  
FROM Demo
GROUP BY PersonID, LastName, FirstName);

输出:

现在。使用以下命令删除不在上述查询中的所有具有 rowid 的行:

询问:

DELETE Demo  
WHERE rowid NOT IN 
  (SELECT MAX(rowid)  
FROM Demo
GROUP BY PersonID, LastName, FirstName);

输出:

删除重复项的最终表如下: