sql2005,删除某个字段重复的记录,随机留下一条记录

drop table #tmp  --删除临时表
create table #tmp --创建临时表
(
number numeric(18, 0)
)
insert into #tmp
select number from cght group by number having count(*)>1 --将number 字段有重复记录的内容插入到临时表

select * from #tmp

 

declare @count int
declare @i int
declare @i1 int
select @i=count(*) from #tmp
set @i1=0
while @i1<@i
begin
select @count =count(*) from cght where number in(select top(1) number from #tmp order by number) --获得临时表中第一条记录在原表中有多少条重复记录
delete top(@count-1) from  cght where number in(select top(1) number from #tmp order by number)--删除原表的重复记录,留一条
delete  from #tmp where number in (select top(1) number from #tmp order by number) --删除临时表的第一条记录
set @i1=@i1+1
end

你可能感兴趣的:(sql2005,删除某个字段重复的记录,随机留下一条记录)