如何删除 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);
输出:
删除重复项的最终表格如下:
版权属于:月萌API www.moonapi.com,转载请注明出处