删除数据表中重复行的方法

时间:2021-10-10 20:09:50
 
如果要重复的内容完全一致,可以使用distinct关键字删除:
示例:
select distinct t1.* into tmp from table1
如果数据表中某几个字段出现重复,需要将这些字段中存在重复的行删除,则需要按照以下步骤操作:
1) 备份数据;
2)检查待删除的数据表中是否存在唯一标识行。如果存在,则跳到下一步;否则为数据表新增列,将该列类型设为自增(不同数据库中操作方法不太一样,但多数都有该功能);
3) 使用join语句查找存在重复的行,SQL语句示例如下:
查找重复行
select t1.* into duplicate_rows from tmp0 t1 join tmp0 t2 on  t1.class_name = t2.class_name and t1.field_name=t2.field_name and t1.id<>t2.id 
4) 检查查出的结果是否正确,如果正确则继续下一步,否则检查查找的逻辑是否正确;
5) 删除存在重复的行,使用的SQL语句示例如下: 删除重复行 delete from tmp0 where id in(select id  from tmp0 a where a.id < (select max(id) from duplicate_rows b where a.class_name =b.class_name and a.field_name = b.field_name))
6) 清空原始数据,并将tmp0中的数据导入到原始数据表中;
7) 分析产生重复的原因,并从根源上杜绝出现重复。