Sqlserver 2000 数据库表中删除重复记录(仅保留一条)

来源:互联网 发布:斗地主机器人算法 编辑:程序博客网 时间:2024/05/22 00:22

 

以前在面试中经常被问到怎么删除数据库中重复记录,但是因为缺乏真实场景,即使在网上看到相关信息也是看的云里雾里,今天在工作中就遇到相同情况,经过网上查找相关材料,把自己解决方式整理分享给大家

描述:

表名: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_table1colu_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、              操作结束,为防止操作失误,请提前备份表数据

 

 

 

 

 

原创粉丝点击