可以用临时表,不过这种操作更简单!假设原来的表为cuku_inf,col_ckdh有重复,需要保留一笔即可
建立一张具有和cuku_inf相同结构的临时表mytemptable,单击鼠标右键,选择所有任务,选择管理索引,选择新建,起个索引名字,列就是col_ckdh,建立一个索引,勾选上唯一(unique),勾选上忽略重复的值,其他不要选择!然后把资料insert into到临时表,
此时SQL Server会返回如下提示:
服务器: 消息 3604,级别 16,状态 1,行 1
已忽略重复的键。
它表明在临时表mytemptable中不会有重复的行出现。然后将原表cuku_inf清空,并将临时表mytemptable中数据导入,最后删除临时表mytemptable。
这样就完成了对表中重复记录的删除。该方法的执行速度都是相当快的,而且因为几乎不用写语句,所以它也是很安全的。不过要依靠你的col_ckdh,万一你操作不当,没有关系,不要那么急着删除原来的表,先select看看mytemptable的资料是否是对的,这样不会出什么异常,错删除纪录!
建立一张具有和cuku_inf相同结构的临时表mytemptable,单击鼠标右键,选择所有任务,选择管理索引,选择新建,起个索引名字,列就是col_ckdh,建立一个索引,勾选上唯一(unique),勾选上忽略重复的值,其他不要选择!然后把资料insert into到临时表,
此时SQL Server会返回如下提示:
服务器: 消息 3604,级别 16,状态 1,行 1
已忽略重复的键。
它表明在临时表mytemptable中不会有重复的行出现。然后将原表cuku_inf清空,并将临时表mytemptable中数据导入,最后删除临时表mytemptable。
这样就完成了对表中重复记录的删除。该方法的执行速度都是相当快的,而且因为几乎不用写语句,所以它也是很安全的。不过要依靠你的col_ckdh,万一你操作不当,没有关系,不要那么急着删除原来的表,先select看看mytemptable的资料是否是对的,这样不会出什么异常,错删除纪录!
delete from cuku_inf --删除所有的纪录
insert into cuku_inf
select M.col2,M.col3,.. from #MytempTable M --插入,除了序号sn
where not exists (select col_ckdh from #MytempTable T where T.col_ckdh = M.col_ckdh and M.sn > T.sn )用第一种方法,速度快,这个耗时多,不过那个一个操作,这个是一个sql 语句,FYI
然后把原表的重復記錄刪除掉
最后把臨時表中的記錄插入原表中
1﹑
select * into ##ta from cuku_inf
WHERE col_ckdh IN
(SELECT col_ckdh
FROM cuku_inf
GROUP BY col_ckdh
HAVING COUNT(col_ckdh) > 1)
2﹑
delete from cuku_inf WHERE col_ckdh IN
(SELECT col_ckdh
FROM cuku_inf
GROUP BY col_ckdh
HAVING COUNT(col_ckdh) > 1)
3﹑
insert into cuku_inf select * from ##ta
楼上正解,不过1里面要稍微改一下:
select distinct * into ##ta …………
select distinct * into ##ta 也不一定对,,如果字段有些不相同的话就不能把重复的删除,而distinct *是取两行完全相同的记录!!先把重復的記錄放到臨時表中
然后把原表的重復記錄刪除掉
最后把臨時表中的記錄插入原表中
1﹑
select identity(int,1,1) as sn,* into ##ta from cuku_inf
WHERE col_ckdh IN
(SELECT col_ckdh
FROM cuku_inf
GROUP BY col_ckdh
HAVING COUNT(col_ckdh) > 1)
2﹑
delete from cuku_inf WHERE col_ckdh IN
(SELECT col_ckdh
FROM cuku_inf
GROUP BY col_ckdh
HAVING COUNT(col_ckdh) > 1)
3﹑
insert into cuku_inf select * from ##ta where sn in (select min(sn) from #taa
group by col_ckdh)
delete cuku_inf from cuku_inf a where exist (select 1 from cuku_inf b where a.col_ckdh=b.col_ckdh and a.col>b.col)
col_ckdh 是你存存重复和字段
col 是同一col_ckdh重复记录中,记录不同的字段!如果你的记录就是col_ckdh重复的话,col可以是你的任何字段!相关可以在论坛里搜索: 重复记录
http://community.csdn.net/Expert/topic/2682/2682394.xml?temp=.9112207