删除具有精确值的重复记录
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................) 的项目中删除
当两行完全相同的记录时,如何删除重复记录?
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................) 的项目中删除