删除具有精确值的重复记录

Delete Duplicate records with exact value

当两行完全相同的记录时,如何删除重复记录?

create table item
(id int,
product_name varchar(20),
quantity int,
amount decimal(10,2)
);

insert into item values(1,"Laptop",10,89.9),(1,"Laptop",10,89.9),(2,"Mixer",8,82),(4,"Fridge",9,100);

这将删除重复 ID 的所有记录

DELETE FROM item
WHERE ID IN (SELECT id,row_num FROM (SELECT ID, ROW_NUMBER() OVER (PARTITION BY ID ORDER BY ID) AS row_num FROM item) t
WHERE row_num > 1);

我实际上建议创建一个临时 table,插入无重复的记录,然后将临时 table 重命名为原始 table 名称。

CREATE TABLE item2 (
    id int,
    product_name varchar(20),
    quantity int,
    amount decimal(10,2)
);

INSERT INTO item2 (id, product_name, quantity, amount)
SELECT DISTINCT id, product_name, quantity, amount
FROM item;

DROP TABLE item;
ALTER TABLE item2 RENAME TO item;
DROP TABLE item2;

使用新的主键或唯一键创建副本 table 然后获取所有重复记录 select 来自 id =1 的项目的 id 有 COUNT(*)>1 将为您提供所有具有新主键或唯一键的重复记录

复制要删除的主键

从 id 为 (1,2,3,5................) 的项目中删除