嵌套游标的方式来删除表中重复的数据-网站运营顾问-江西世纪网络

电信站 网通站

万网产品站 新网产品站

服务热线： | 0791-6810858
| 400-6868-103 (免长途费)

首 页 网站建设 OA办公 网站推广 域名注册 虚拟主机 集团邮局 服务器租用 运营顾问 网站案例 |

您现在的位置：首页 → 运营顾问 → 网站建设类

运营顾问
Consultant

网站建设类

网络营销类

运营研究类

网站优化类

嵌套游标的方式来删除表中重复的数据

网站建设类 www.21it.com 时间：2008-12-26 15:07:18

处理思路：
写一存储过程，使用游标嵌套，读取所有数据，然后依次判断排除，将有重复的ＩＤ放入以逗号分开的字符串中，最后使用delete语句批量删除。
以下是具体实现sql语句：
批量删除表中重复数据[www.cn-web.com]
--删除数据库中某表的重复的数据
--作者：老韩，支持：cn-web.com
--要删除的表名为：WeiXianYuanXinXTJ
--判断是否重复的依据为ZhuBiaoLeiXing,qiyeid,zhubiaoxuhao这三个字段一样
--表的主键字段为id
declare @ZhuBiaoLeiXing varchar(400),@qiyeid varchar(4000),@zhubiaoxuhao varchar(4000), @idid varchar(40)
declare @ZhuBiaoLeiXing2 varchar(400),@qiyeid2 varchar(4000),@zhubiaoxuhao2 varchar(4000),@idid2 varchar(40)
declare @idids varchar(8000)
declare @idids2 varchar(8000)
declare @tmpsql nvarchar(4000)
declare @tmpbool int
set @idids='0'
set @idids2='0'
declare cur_tabA cursor for select ZhuBiaoLeiXing,qiyeid,zhubiaoxuhao,[id] from WeiXianYuanXinXTJ
open cur_tabA
fetch next from cur_tabA into @ZhuBiaoLeiXing,@qiyeid,@zhubiaoxuhao,@idid
while @@FETCH_STATUS = 0
begin
set @tmpbool=0
set @tmpsql='declare dur_tabA cursor for select ZhuBiaoLeiXing,qiyeid,zhubiaoxuhao,[id] from WeiXianYuanXinXTJ where [id]<>@ididz and [id] not in ('+@idids+')'
exec sp_executesql @tmpsql,N'@ididz varchar(40)',@ididz=@idid
open dur_tabA
fetch next from dur_tabA into @ZhuBiaoLeiXing2,@qiyeid2,@zhubiaoxuhao2,@idid2
while @@FETCH_STATUS = 0
begin
if @ZhuBiaoLeiXing2=@ZhuBiaoLeiXing and @qiyeid2=@qiyeid and @zhubiaoxuhao2=@zhubiaoxuhao
begin
if @tmpbool=0
begin
set @idids2=@idids2+','+@idid2+','+@idid
end
else
begin
set @idids2=@idids2+','+@idid2
set @tmpbool=1
end
set @idids=@idids+','+@idid2
end
fetch next from dur_tabA into @ZhuBiaoLeiXing2,@qiyeid2,@zhubiaoxuhao2,@idid2
end
close dur_tabA
deallocate dur_tabA
fetch next from cur_tabA into @ZhuBiaoLeiXing,@qiyeid,@zhubiaoxuhao,@idid
end
close cur_tabA
deallocate cur_tabA
declare @laohan_del nvarchar(4000)
set @laohan_del='delete from WeiXianYuanXinXTJ where [id] in ('+@idids+')'
exec sp_executesql @laohan_del
以上在sql2000中测试通过

咨询反馈
如果想获得更为详细的解决方案，并获得专业的支持，请您与我们联系，您也可以在线提交建站意向。

程序开发
世纪网络专业应用系统开发，帮助客户建立业务管理系统、员工管理系统、办公自动化系统等，提高工作效率，提高生产力。
网站推广
Baidu百度作为全球最大的中文搜索引擎，是国内用户最常使用搜索引擎。实践证明，其竞价排名是目前为止效果最好，投资回报最高的网络推广服务。

收藏本站 | 关于我们 | 新闻公告 | 付款方式 | 留言反馈 | 人才招聘 | 合作伙伴 | 联系方式

版权所有 © 2008 江西世纪网络科技有限公司 赣ICP备05020270号
全国统一服务热线：400-6868-103 QQ在线：80229612 6022008 24009604
电话：0791-6810858 6810859 不间断服务：13097283353 13870607108
地址：南昌市南京东路165号东方广场A1-2座1104 (邮编：330029)
法律顾问：北京市衡基律师事务所 徐颖略律师