以前在面试中经常被问到怎么删除数据库中重复记录,但是因为缺乏真实场景,即使在网上看到相关信息也是看的云里雾里,今天在工作中就遇到相同情况,经过网上查找相关材料,把自己解决方式整理分享给大家
描述:
表名:Table1
字段 colu_id,colu_1,colu_2,colu3
说明:表中没有主键,部分记录中存在重复值,但并不是完全意义上的重复,只是其中某字段重复,这里是colu_id有重复
解决方案:
1、 建一张临时表存储,表结构和Table1一致,因为我的table1 字段值太多,我直接采用下面的语句复制Table1表
Select * into temp_table1 from table1
2、 清空临时表数据
Delete from temp_table1
3、 为该表加上索引,并使其忽略重复的值
方法是在企业管理器中找到刚才建的临时表temp_table1,鼠标右击——所有任务——管理索引,选择新建,弹出如下对话框:
按照上图红色标记设置选项。
注意:新建索引要勾选现在是重复记录,但是准备删除的字段,比如我在这里选择的是colu_id
1、 copy table1表数据到temp_table1中,此时查询器会如下提示:
服务器: 消息 3604,级别 16,状态 1,行 1 已忽略重复的键
此时临时表temp_table1列colu_id列中已经没有重复记录
2、 将临时表(temp_teable1)数据拷贝到原来的表(table1)中
删除table1中数据: delete from table1
将临时表(temp_table1)数据插入到(table1)中:
Insert into table1 select * from temp_table1
3、 删除临时表:drop table temp_table1
4、 操作结束,为防止操作失误,请提前备份表数据