我们有时候会碰到需要删除重复记录,一般实现删除重复记录可以写一段代码,用游标遍历,从而删除记录,但如果记录条数比较多,用游标的方法删除需要执行非常长的时间。
一般情况下,我们会有两种情况的删除操作,一种是完全重复的记录,所有字段都重复的情况,另一种是部分关键字段重复的记录,其他字段不重复,或重复但可以忽略。
第一种情况比较简单,可以使用如下的方法进行:
select distinct * into #tmp from tablename
drop table tablename
select * into tablename from #tmp
drop table # tmp
第二种情况比较麻烦,以下是一种比较简单的做法:
创建一个和源表一模一样的表。
可以这么创建:select top 1 * into TableTemp from table
delete from TableTemp
为该表增加索引,并忽略重复的项

复制信息到临时表:
sql语句如下:insert into TableTemp Select * from table
不重复的记录已经存在临时表了,接下来你只要清空源表,并把临时表记录导入源表,删除临时表即可。
这种错误出现的原因是数据库设计的时候缺少了约束关系,在创建数据库的时候只要简单的增加约束关系就可以避免这种错误!