四种SQL语句删除重复记录的方法

数据库 SQL Server
使用SQL语句有多种删除重复记录的方法,下文为您介绍四种方法,教你如何用SQL语句删除重复记录,供您参考,希望对您有所帮助。

使用SQL语句有多种删除重复记录的方法,下文为您介绍四种方法,教你如何用SQL语句删除重复记录,供您参考,希望对您有所帮助。

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

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

方案1:

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

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

2、将不重复的记录记入temp1表:

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

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

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

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


5、恢复表:#p#

insert [表名]
select * from temp2

6、删除临时表:

drop table temp1
drop table temp2

方案2:

declare @max integer,@id integer
declare cur_rows cursor local for
select id,count(*) from 表名 group by id having count(*) > 1
open cur_rows
fetch cur_rows into @id,@max
while @@fetch_status=0
begin
select @max = @max -1
set rowcount @max
delete from 表名 where id = @id
fetch cur_rows into @id,@max
end
close cur_rows
set rowcount 0

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

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

责任编辑:段燃 来源: 赛迪网
相关推荐

2010-09-28 15:40:51

SQL删除重复记录

2010-09-25 16:17:25

SQL语句

2010-10-13 17:07:46

MySQL删除重复记录

2010-09-28 15:46:22

SQL删除重复记录

2010-11-23 14:26:02

MySQL删除重复记录

2010-10-27 16:49:23

Oracle删除重复记

2010-09-03 11:42:04

SQL删除

2010-09-30 10:29:56

DB2删除重复记录

2010-10-13 17:13:17

MySQL重复记录

2010-07-26 17:00:11

SQL Server查

2010-11-25 15:43:02

MYSQL查询重复记录

2011-05-24 10:04:39

Oracle重复记录

2010-11-15 14:42:03

Oracle查询重复记

2010-10-27 16:56:05

Oracle重复记录

2011-03-04 17:30:42

Oracle数据库

2011-08-29 17:13:03

外连接不等值连接等值连接

2010-07-02 13:50:11

SQL Server数

2010-11-03 11:49:15

删除DB2数据

2010-04-13 10:23:40

Oracle数据库

2010-10-22 16:29:11

SQL Server删
点赞
收藏

51CTO技术栈公众号