日期:2011-05-02 15:21:00 来源:本站整理
在SQL Server中快速删除反复记录[MSSQL防范]
本文“在SQL Server中快速删除反复记录[MSSQL防范]”是由七道奇为您精心收集,来源于网络转载,文章版权归文章作者所有,本站不对其观点以及内容做任何评价,请读者自行判断,以下是其具体内容:
开辟人员的恶梦——删除反复记录
想必每一位开辟人员都有过近似的阅历,在对数据库举行查询或统计的时刻不时地会碰到由于表中存在反复的记录而招致查询和统计后果不精确.办理该问题的办法就是将这些反复的记录删除,只保存此中的一条.
在sql server中除了对拥有十几条记录的表举行人工删除外,实现删除反复记录普通都是写一段代码,用游标的办法一行一行查抄,删除反复的记录.因为这种办法需求对整个表举行遍历,所以关于表中的记录数不是很大的时刻还是可行的,假如一张表的数据到达上百万条,用游标的办法来删除简直是个恶梦,因为它会履行相当长的一段时间.
四板斧——轻松消除反复记录
却不知在SQL Server中有一种更为简单的办法,它不需求用游标,只要写一句简单插入语句就可以实现删除反复记录的功效.为了能清楚地表述,我们首先假定存在一个产品信息表Products,其表构造以下:
CREATE TABLE Products ( ProductID int, ProductName nvarchar (40), Unit char(2), UnitPrice money ) |
表中的数据如图1:
图1中可以看出,产品Chang和Tofu的记录在产品信息表中存在反复.目前要删除这些反复的记录,只保存此中的一条.步骤以下:
第一板斧——成立一张具有相同构造的暂时表
CREATE TABLE Products_temp ( ProductID int, ProductName nvarchar (40), Unit char(2), UnitPrice money ) |
第二板斧——为该表加上索引,并使其忽视反复的值
办法是在企业管理器中找到上面成立的暂时表Products _temp,单击鼠标右键,挑选全部任务,挑选管理索引,挑选新建.如图2所示.
按照图2中圈出来的地方设置索引选项.
第三板斧——拷贝产品信息到暂时表
insert into Products_temp Select * from Products |
此时SQL Server会返回以下提醒:
服务器: 消息 3604,级别 16,状况 1,行 1
已忽视反复的键.
它表明在产品信息暂时表Products_temp中不会有反复的行呈现.
第四板斧——将新的数据导入原表
将原产品信息表Products清空,并将暂时表Products_temp中数据导入,最后删除暂时表Products_temp.
delete Products insert into Products select * from Products_temp drop table Products_temp |
这样就完成了对表中反复记录的删除.无论表有多大,它的履行速度都是相当快的,并且因为几近不用写语句,所以它也是很安全的.
小提醒:上述办法中删除反复记录取决于成立唯一索引时挑选的字段,在实际的操作历程中读者务必首先确认成立的唯一索引字段能否精确,免得将有效的数据删除. 以上是“在SQL Server中快速删除反复记录[MSSQL防范]”的内容,如果你对以上该文章内容感兴趣,你可以看看七道奇为您推荐以下文章:
本文地址: | 与您的QQ/BBS好友分享! |
评论内容只代表网友观点,与本站立场无关!
评论摘要(共 0 条,得分 0 分,平均 0 分)
查看完整评论