手工快速删除SQL Server中的重复记录

文/不详  出处:互联网

首先假设存在一个产品信息表Products,其表结构如下:
CREATE TABLE Products (
ProductID int,
ProductName nvarchar (40),
Unit char(2),
UnitPrice money
)

表中的数据如下:


 附件: 您所在的用户组无法下载或查看附件

产品Chang和Tofu的记录在产品信息表中存在重复。现在要删除这些重复的记录,只保留其中的一条。步骤如下:
第一、    建立一张具有相同结构的临时表
CREATE TABLE Products_temp (

ProductID int,

ProductName nvarchar (40),

Unit char(2),

UnitPrice money

)

第二、    为该表加上索引,并使其忽略重复的值
方法是在企业管理器中找到上面建立的临时表Products _temp,单击鼠标右键,选择所有任务,选择管理索引,选择新建。如图所示。 按照图中圈出来的地方设置索引选项。

 附件: 您所在的用户组无法下载或查看附件
 
第三、拷贝产品信息到临时表:  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] 的这些文章也感兴趣:

解决SQL Server 2000之日志传送功能
SQLServerSA权限总结经典技术
SQL Server 2008特性包RTM版已经发布
高效率的SQL查询效率:100w数据查询只需要1秒钟
SQL Server 7.0 入门(四)
SQL Server 错误 '80040e37' 的解决办法
SQLServer悲观锁定和乐观锁定应用实例
SQL Server 2005关于数据类型最大值
SQL Server 2005 SSIS 技巧:动态目的文件名
SQL Server 2008的四项新特性