删除数据库中重复数据的几个方法_MsSql_脚本之家

方法一 declare@maxinteger,@idinteger
declarecur_rowscursorlocalforselect主字段,countfrom表名groupby主字段havingcount>1
opencur_rows fetchcur_rowsinto@id,@max while@@fetch_status=0 begin
select@max=@max-1 setrowcount@max deletefrom表名where主字段=@id
fetchcur_rowsinto@id,@max end closecur_rows setrowcount0 方法二
有四个意思上的重复记录,一是全然重复的笔录,也即具备字段均再一次的笔录,二是意气风发对重要字段重复的记录,比方Name字段重复,而任何字段不确定再一次或都再一次能够忽视。
1、对于第生龙活虎种重复,比较简单解决,使用selectdistinct*fromtableName就足以博得无重复记录的结果集。
假若该表须求删除重复的笔录,能够按以下办法删除
selectdistinct*into#TmpfromtableName droptabletableName
select*intotableNamefrom#Tmp droptable#Tmp
发生这种重新的缘故是表设计不周发生的,扩充独一索引列就可以减轻。
2、那类重复难题平时供给保存重复记录中的第一条记下,操作方法如下:
假存在重复的字段为Name,Address,须求获取那五个字段唯后生可畏的结果集
selectidentityasautoID,*into#TmpfromtableName
selectminasautoIDinto#Tmp2from#TmpgroupbyName,autoID
select*from#TmpwhereautoIDin(selectautoIDfrom#tmp2)
最后一个select即获得了Name,Address不重复的结果集(但多了三个autoID字段,实际写时能够写在select子句中节省此列卡塔 尔(英语:State of Qatar)

相关文章