SQL Server库表中删除重复数据

          前天开发系统时又遇到重复数据的问题,于是将之前收集整理的脚本代码(脚本1)拿出来运行,结果直接蹦出(错误1)。看错误信息,估计是数据量太多。为验证这个想法,我新建一张表,添加2个字段,在输入3条重复的数据,在执行(脚本1),结果命令成功执行。怎么办呢?我推测可能是删除数据量大,花费太多时间的缘故,于是将脚本修改为(脚本2),再运用于新建的表,结果命令成功执行。我满怀欣喜地将(脚本2)运用于我要删除重复数据的那张库表。但是结果让人失望,还是出现(错误2)。经过一番测试,我才知道使用 select into 将新建库表,而(脚本2)中只讲数据删除,库表还是存在,故提示对象已存在。再修改(脚本2),得到(脚本3)。结果竟还是出现(错误3),不过错误已经很明显了,是由于存在自增列的缘故。最后将脚本修改为(脚本4),命令成功执行,OK!!!

脚本1:

select distinct * into #Tmp from tableName
drop table tableName
select * into tableName from #Tmp
drop table #Tmp

脚本2:

select distinct * into #Tmp from tableName
delete from tableName
select * into tableName from #Tmp
drop table #Tmp

脚本3:

select distinct [col1, col2, ...] into #Tmp from tableName
delete from tableName
insert into tableName (col1, col2, ....) select * from #Tmp
drop table #Tmp

脚本4:

select distinct * into #Tmp from tableName
delete from tableName
insert into tableName select * from #Tmp
drop table #Tmp

 

错误1:

服务器: 消息 3724,级别 16,状态 2,行 1
无法 除去 表 'tableName',因为它正用于复制。

错误2:

服务器: 消息 2714,级别 16,状态 6,行 3
数据库中已存在名为 'tableName' 的对象。

错误3:

服务器: 消息 8101,级别 16,状态 1,行 3
仅当使用了列的列表,并且 IDENTITY_INSERT 为 ON 时,才能在表 'tableName' 中为标识列指定显式值。


 

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值