免费注册 查看新帖 |

Chinaunix

  平台 论坛 博客 文库
最近访问板块 发新帖
查看: 27030 | 回复: 56
打印 上一主题 下一主题

求删除重复记录的sql语句? [复制链接]

论坛徽章:
0
跳转到指定楼层
1 [收藏(0)] [报告]
发表于 2003-09-27 16:15 |只看该作者 |倒序浏览
提示: 作者被禁止或删除 内容自动屏蔽

论坛徽章:
0
2 [报告]
发表于 2003-09-27 16:43 |只看该作者
查找比较简单,好象只能一条一条删除哦(使用游标)

论坛徽章:
0
3 [报告]
发表于 2003-09-27 17:02 |只看该作者
算了,今天开心哦 给出一个完整的解决方案:

将重复的记录记入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

论坛徽章:
0
4 [报告]
发表于 2003-09-27 17:06 |只看该作者
提示: 作者被禁止或删除 内容自动屏蔽

论坛徽章:
0
5 [报告]
发表于 2003-09-28 04:13 |只看该作者
首先将test表备份
select distinct[/COLOR] id,name into #tmp from test --取test表里id,name不重复的纪录到临时表#tmp里
delete test --清空test里的纪录
insert test(id,name)
select id,name from #tmp --将#tmp里id,name唯一的纪录写入test表

论坛徽章:
0
6 [报告]
发表于 2003-10-04 08:24 |只看该作者
看看我的方法﹕
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

论坛徽章:
0
7 [报告]
发表于 2003-10-04 08:25 |只看该作者
聲明游標時如果使用動態SQL的方法﹐就可以封裝在過程內﹐
傳入表名則刪除該表的重復記錄。

论坛徽章:
0
8 [报告]
发表于 2003-10-04 08:29 |只看该作者
delete from 表名 where id = @id   ??

你这样做不是连根拔起了吗?  阿弥驼佛!罪过

论坛徽章:
0
9 [报告]
发表于 2003-10-04 08:34 |只看该作者
你試試就知道啦﹐set rowcount @max - 1
表示當前緩沖區只容納@max-1條記錄﹐如果有十條重復的﹐就刪除
10條﹐一定會留一條的。其實也可以寫成delete from 表名就行啦﹐我
就怕大家會誤解﹐才多此一舉的。

论坛徽章:
0
10 [报告]
发表于 2003-10-04 08:52 |只看该作者
最初由 xzh2000 发布
[B]你試試就知道啦﹐set rowcount @max - 1
表示當前緩沖區只容納@max-1條記錄﹐如果有十條重復的﹐就刪除
10條﹐一定會留一條的。其實也可以寫成delete from 表名就行啦﹐我
就怕大家會誤解﹐才多此一舉的。 [/B]


(0 row(s) affected)    ?
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

北京盛拓优讯信息技术有限公司. 版权所有 京ICP备16024965号-6 北京市公安局海淀分局网监中心备案编号:11010802020122 niuxiaotong@pcpop.com 17352615567
未成年举报专区
中国互联网协会会员  联系我们:huangweiwei@itpub.net
感谢所有关心和支持过ChinaUnix的朋友们 转载本站内容请注明原作者名及出处

清除 Cookies - ChinaUnix - Archiver - WAP - TOP