数据库中删除重复记录一直是件挺烦人的事,本人收集了Oracle跟SqlServer的快速删除重复记录的方法,供大家参考,希望对大家有所帮助
SQLSERVER想必每一位SQLSERVER开发人员都有过类似的经历,在对数据库进行查询或统计的时候不时地会碰到由于表中存在重复的记录而导致查询和统计结果不准确
解决该问题的办法就是将这些重复的记录删除,只保留其中的一条
在SQLServer中除了对拥有十几条记录的表进行人工删除外,实现删除重复记录一般都是写一段代码,用游标的方法一行一行检查,删除重复的记录
因为这种方法需要对整个表进行遍历,所以对于表中的记录数不是很大的时候还是可行的,如果一张表的数据达到上百万条,用游标的方法来删除简直是个噩梦,因为它会执行相当长的一段时间
四板斧——轻松消除重复记录殊不知在SQLServer中有一种更为简单的方法,它不需要用游标,只要写一句简单插入语句就能实现删除重复记录的功能
为了能清楚地表述,我们首先假设存在一个产品信息表Products,其表结构如下:CREATETABLEProducts(ProductIDint,ProductNamenvarchar(40),Unitchar(2),UnitPricemoney)表中的数据如图1:图表图1中可以看出,产品Chang和Tofu的记录在产品信息表中存在重复
现在要删除这些重复的记录,只保留其中的一条
步骤如下:第一板斧——建立一张具有相同结构的临时表CREATETABLEProducts_temp(ProductIDint,ProductNamenvarchar(40),Unitchar(2),UnitPricemoney)第二板斧——为该表加上索引,并使其忽略重复的值方法是在企业管理器中找到上面建立的临时表Products_temp,单击鼠标右键,选择所有任务,选择管理索引,选择新建