教学之友,学习之友。

站长教学网

当前位置: 站长教学网 > 数据库 > MSSQL教程 >

MSSQL中用语句删除重复记录的4种方法

时间:2012-04-10 09:54来源:未知 作者:ken 点击:

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

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

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

  方法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、恢复表:

  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 表名。站长教学网 eduyo.com

(责任编辑:ken)

TAG标签: 删除 sql server 重复 记录
顶一下
(0)
0%
踩一下
(0)
0%
------分隔线----------------------------
发表评论
请自觉遵守互联网相关的政策法规,严禁发布色情、暴力、反动的言论。
评价:
表情:
注册登录:不允许匿名留言,登录后留言无需输入验证码。
栏目列表
最新内容