数据量较大,直接整表处理对数据库日志冲击太大不合适,建议分批处理(如每次处理5000行), 如下例子供参考.declare @minid int,@maxid intselect @minid=min(id), @maxid=max(id) from odrewhile(@minid<=@maxid) begin -- 删除重复的记录,只保留id最小的那条记录. delete a from odre a inner join (select [重复值的字段列表],min(id) 'id' from odre where id between @minid and @minid+5000 group by [重复值的字段列表] having count(1)>1) b on a.[重复值的字段列表]=b.[重复值的字段列表] and a.id<>b.id where a.id between @minid and @minid+5000 select @minid=@minid+5001 end
如下例子供参考.declare @minid int,@maxid intselect @minid=min(id),
@maxid=max(id)
from odrewhile(@minid<=@maxid)
begin
-- 删除重复的记录,只保留id最小的那条记录.
delete a
from odre a
inner join
(select [重复值的字段列表],min(id) 'id'
from odre
where id between @minid and @minid+5000
group by [重复值的字段列表]
having count(1)>1) b on a.[重复值的字段列表]=b.[重复值的字段列表] and a.id<>b.id
where a.id between @minid and @minid+5000 select @minid=@minid+5001
end