`
wangtiantian5566
  • 浏览: 2018 次
  • 性别: Icon_minigender_1
  • 来自: 深圳
最近访客 更多访客>>
文章分类
社区版块
存档分类
最新评论

在SQL Server中快速删除重复记录(多图)

阅读更多
开发人员的噩梦——删除重复记录

  想必每一位开发人员都有过类似的经历,在对数据库进行查询或统计的时候不时地会碰到由于表中存在重复的记录而导致查询和统计结果不准确。解决该问题的办法就是将这些重复的记录删除,只保留其中的一条。

  在SQL Server中除了对拥有十几条记录的表进行人工删除外,实现删除重复记录一般都是写一段代码,用游标的方法一行一行检查,删除重复的记录。因为这种方法需要对整个表进行遍历,所以对于表中的记录数不是很大的时候还是可行的,如果一张表的数据达到上百万条,用游标的方法来删除简直是个噩梦,因为它会执行相当长的一段时间。

  四板斧——轻松消除重复记录

  殊不知在SQL Server中有一种更为简单的方法,它不需要用游标,只要写一句简单插入语句就能实现删除重复记录的功能。为了能清楚地表述,我们首先假设存在一个产品信息表Products,其表结构如下:

CREATE TABLE Products (
ProductID int,
ProductName nvarchar (40),
Unit char(2),
UnitPrice money
)

  表中的数据如图1:

在SQLServer中快速删除重复记录(多图)
图表

  图1中可以看出,产品Chang和Tofu的记录在产品信息表中存在重复。现在要删除这些重复的记录,只保留其中的一条。步骤如下:

  第一板斧——建立一张具有相同结构的临时表

CREATE TABLE Products_temp (
ProductID int,
ProductName nvarchar (40),
Unit char(2),
UnitPrice money
)

  第二板斧——为该表加上索引,并使其忽略重复的值

  方法是在企业管理器中找到上面建立的临时表Products _temp,单击鼠标右键,选择所有任务,选择管理索引,选择新建。如图2所示。

  按照图2中圈出来的地方设置索引选项。

在SQLServer中快速删除重复记录(多图)
图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 2005学习sql

    在SQL Server 2005中,学习SQL首先要掌握其基本语法,包括数据查询、插入、更新和删除操作。例如,SELECT语句用于从表中检索数据,INSERT用于向表中添加新记录,UPDATE用于修改现有记录,而DELETE则用于删除记录。...

    一款免安装sqlserver客户端管理工具,好用

    标题中的“一款免安装sqlserver客户端管理工具,好用”指的是SqlDbxPersonal,这是一款专为SQL Server设计的轻量级、无需安装的数据库管理工具。它允许用户方便地进行SQL查询、数据库管理和开发工作,而无需经历传统...

    sqlserver2012入门视频教程

    SQL Server 2012提供了全备份、差异备份、事务日志备份等多种备份类型,以及简单的还原、完全还原、大容量日志记录还原等多种恢复模式,可根据实际需求灵活选择。 通过本教程的学习,初学者将能够掌握SQL Server ...

    SQL Server期末考试试卷

    在实际的SQL Server期末考试中,学生需要熟悉以上概念并能应用到实际问题解决中。考试可能涵盖选择题、填空题、判断题和简答题,涉及DBMS原理、关系模型、数据库设计、SQL查询以及SQL Server的管理操作等多个方面。...

    SQL Server工具助手

    例如,可以一次性导入或导出多个表的数据,或者对多张表执行更新、删除等操作,减少了重复劳动和手动错误的可能性。 3. **查看与复制表数据**: 用户可以通过工具直观地查看数据库中的表结构和数据,无需编写复杂...

    SQLserver数据库习题.doc

    13. E-R 图中的图形元素:在 E-R 图中,用于表示实体的图形元素是矩形。 14. 事务的特点:事务的特点包括原子性、隔离性、一致性,相关性不是事务的特点。 15. 属性的删除:要在学生关系 S(S#,Sname,Sex,Age)中,...

    sqlserver2000课件

    在SQL Server 2000的学习之旅中,作为数据库初学者,您将探索一个强大而广泛使用的数据库管理系统,它在20世纪末到21世纪初的企业级数据存储和管理中占据重要地位。SQL Server 2000是微软公司推出的一款关系型数据库...

    最有价值的SQL Server2000 chm

    SQL Server 2000是微软公司推出的一款关系型数据库管理系统,它在企业级数据管理、数据存储和数据分析中扮演着重要角色。本资源“最有价值的SQL Server 2000 chm”包含了该系统的核心知识,对于SQL Server的学习者和...

    SQL Server笔试题(Sql2000常见笔试题)

    - **删除记录**:DELETE FROM 用于从表中删除一条或多条记录。 - **查询数据**:SELECT 用于从表中检索数据,可配合WHERE子句进行条件筛选,ORDER BY进行排序,LIMIT或TOP限制返回的行数。 - **聚合函数**:AVG、...

    SQL Server 数据转换图文教程.rar

    例如,删除重复记录,更新空值或修正格式错误的数据。 2. **类型转换** 在SQL Server中,数据类型包括数值型、字符型、日期/时间型等。有时需要将数据从一种类型转换为另一种。这可以通过`CAST`或`CONVERT`函数...

    sql server术语学习表

    **用途**:集中管理和监控多个SQL Server实例的事件。 #### SQL Expression (SQL表达式) **定义**:`SQL Expression`是指在SQL语句中使用的计算公式。 **用途**:用于计算和生成数据。 #### SQL Query (SQL查询)...

    SQL server 语句大全

    存储过程是一种预先编译好的SQL代码块,可以在后续多次调用时快速执行。 ```sql CREATE PROCEDURE GetEmployeeDetails AS BEGIN SELECT * FROM Employees; END; ``` #### 带参数 存储过程也可以接受参数,从而实现...

    sqlserver达标考试题及答案.docx

    - 相关子查询是在外部查询的每一行上重复执行的子查询,通常与外部查询中的某一行有关联。 3. **主键与外键概念** - **主键**是一张表中的一个或多个字段组合,用于唯一标识表中的每一条记录。 - **外键**用于...

    SQL Server 期末考题2

    2. **删除表的语句**:在SQL Server中,删除表的语句是`DROP TABLE`。例如,`DROP TABLE 表名`将删除指定的表。 3. **触发器触发条件**:题目中的触发器`abc`在表1上定义,对`insert`, `update`, `delete`操作都...

    sql server .doc

    如果希望重新排序多个查询结果的合并结果,可以在最后的SELECT语句中使用UNION ALL或UNION(根据是否允许重复行)子句,然后配合ORDER BY子句来完成排序。 【GROUP BY子句】 GROUP BY子句写在WHERE子句之后,用于将...

    Microsoft SQL Server 2008技术内幕:T-SQL查询(第二卷)

    11.1 在SQL Server中进行分区 11.1.1 分区视图 11.1.2 分区表 11.2 总结 第12章 图、树、层次结构和递归查询 12.1 术语 12.1.1 图 12.1.2 树 12.1.3 层次结构 12.2 应用场景 12.2.1 员工组织图 12.2.2 ...

    sqlserver2008数据库实例练习

    在这个实例中,你需要了解SQL的基本语句,如SELECT用于查询数据,INSERT用于插入新记录,UPDATE用于修改现有记录,DELETE用于删除记录。此外,还会涉及JOIN操作,用于合并多个表的数据,以及WHERE子句来筛选特定条件...

    SQLServer2008技术内幕T-SQL查询包含源代码及附录A

    《Microsoft SQL Server 2008技术内幕:T-SQL查询》全面深入地介绍了Microsoft SQL Server 2008中高级T-SQL查询、性能优化等方面的内容,以及SQL Server 2008新增加的一些特性。主要内容包括SQL的基础理论、查询优化...

    sql server 资源管理

    最后,SQL Server还支持使用uniqueidentifier数据类型,这种数据类型常用于生成全局唯一标识符(GUID),它是创建唯一记录的可靠方式,尤其在分布式系统中。 综上所述,SQL Server的资源管理涉及了数据库的设计、表...

    SQL+SERVER+2008+学习笔记

    ### SQL Server 2008 学习笔记关键知识点概览 #### 一、SQL Server 2008 安装与配置 ##### 1.1 版本介绍 - **企业版**: 面向大型企业,提供最全面的功能。 - **标准版**: 提供核心的数据管理和业务智能功能。 - **...

Global site tag (gtag.js) - Google Analytics