一题多解教你语句删除重复记录的

文章来源:丹阳文学网  |  2021-10-29

此文章用了四种方法教你如何用SQL语句删除重复记录。

问题:怎样把具有相同字段的纪录删除,只留下一条。

例如:表test里有id,name字段,如果有name相同的记录只留下一条,其余的删除。name的内容不定,相同的记录数不定。

方案1:

1、将重复的记录记入temp1表:

select [标志字段id],count(*) into temp1 from [表名]group by [标志字段id]having count(*)1

几无破绽。也有些许友批评p图者意图险恶。 2、将不重复的记录记入temp1表:

insert temp1select [标志字段id],count(*) from [表名]group by [标志字段id]having count(*)=1

3、作一个包含所有不重复记录的表:

select * into temp2 from [表名]where 标志字段id in(select 标志字段id from temp1)

4、删除重复表:delete [表名]

5、恢复表:

insert [表名]select * from temp2

6、删除临时表:

drop table temp1drop table temp2

方案2:

declare @max integer,@id integerdeclare cur_rows cursor local for select id,count(*) from 表名 group by id having count(*) 1open cur_rowsfetch cur_rows into @id,@maxwhile @@fetch_status=0beginselect @max = @max -1set rowcount @maxdelete from 表名 where id = @idfetch cur_rows into @id,@maxendclose cur_rowsset rowcount 0

注:set rowcount @max - 1 表示当前缓冲区只容纳@max-1条记录﹐如果有十条重复的﹐就刪除

10条,一定会留一条的。也可以写成delete from 表名。

银川治疗白癜风
阳泉白癜风哪里治疗好
孝感哪家白癜风医院好
友情链接