首页
知识
文库
登录
|
注册
首页
最近更新
所有主题
我的主题
我的收藏
首页
·
知识
·
数据库
删除重复记录
kemy88
http://blog.csdn.net/kemy88/archive/
MS-SQL
编辑:
dezai
图片来源:网络
想必每一位开发人员都有过类似的经历,在对数据库进行查询或统计的时候不时地会碰到由于表中存在重复的记录而导致查询和统计结果不准确。解决该问题的办法就是
想必每一位开发人员都有过类似的经历,在对数据库进行查询或统计的时候不时地会碰到由于表中存在重复的记录而导致查询和统计结果不准确。解决该问题的办法就是将这些重复的记录删除,只保留其中的一条。
在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
这样就完成了对表中重复记录的删除。无论表有多大,它的执行速度都是相当快的,而且因为几乎不用写语句,所以它也是很安全的。
小提示:上述方法中删除重复记录取决于创建唯一索引时选择的字段,在实际的操作过程中读者务必首先确认创建的唯一索引字段是否正确,以免将有用的数据删除。 本文作者:kemy88 来源:http://blog.csdn.net/kemy88/archive/
CIO之家 www.ciozj.com 微信公众号:imciow
免责声明:本站转载此文章旨在分享信息,不代表对其内容的完全认同。文章来源已尽可能注明,若涉及版权问题,请及时与我们联系,我们将积极配合处理。同时,我们无法对文章内容的真实性、准确性及完整性进行完全保证,对于因文章内容而产生的任何后果,本账号不承担法律责任。转载仅出于传播目的,读者应自行对内容进行核实与判断。请谨慎参考文章信息,一切责任由读者自行承担。
延伸阅读
大型SaaS系统的数据范围权限设计与实现
多租户SaaS平台的数据库方案
什么是时序数据?如何治理?
也许感兴趣的
.
制造企业MES功能架构及实施规划流程
.
如何做好私域运营
.
数据脱敏技术
.
数据中台建设的目标、流程及四大要点
.
数智时代,业财融合分析平台如何重新定义商业智能
.
企业成本管理痛点分析,如何搭建成本管理体系?
.
集团数据备份与恢复管理制度
我们推荐的
.
一文快速入门分库分表
.
什么时候考虑分库分表
.
数据库常用SQL优化总结
.
常见分布式系统数据分布解析
.
云时代的分布式数据库阿里分布式数据库服务DRDS
.
在线数据迁移经验:如何为正在飞行的飞机更换引擎
.
oracle数据库同步技术
.
数据库对象命名参考
主题最新
.
一文搞懂微服务架构演进
.
一文详解微服务架构
.
迄今为止最完整的DDD实践
.
全链路压测自动化实践
.
多维度规划业务架构
.
企业架构之业务架构
.
需求管理完整指南
.
软件安全设计原则
.
应用部署初探:微服务的3大部署模式
看看其它的
收藏至微信