如果一张表的数据达到上百万条,用游标的方法来删除简直是个噩梦,因为它会执行相当长的一段时间……

开发人员的噩梦——删除重复记录

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

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

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

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

CREATE TABLE Products (

ProductID int,

ProductName nvarchar (40),

Unit char(2),

UnitPrice money

)

表中的数据如图1:

SQL Server如何实现?_网页教学网phpstudy.net整理" border="0" src="/files/allimg/071109/0958240.jpg" />

图表

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

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

CREATE TABLE Products_temp (

ProductID int,

ProductName nvarchar (40),

Unit char(2),

UnitPrice money

)

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

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

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

SQL Server如何实现?_网页教学网phpstudy.net整理" width="441" src="/files/allimg/071109/0958241.jpg" />

图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

这样就完成了对表中重复记录的删除。无论表有多大,它的执行速度都是相当快的,而且因为几乎不用写语句,所以它也是很安全的。

小提示:上述方法中删除重复记录取决于创建唯一索引时选择的字段,在实际的操作过程中读者务必首先确认创建的唯一索引字段是否正确,以免将有用的数据删除。

php sql 去除重复数据,MSSQL_快速删除重复记录,SQL Server如何实现?,如果一张表的数据达到上百万 - phpStudy...相关推荐

  1. Excel2016表格中只有一列数据有重复值,怎么快速删除重复值

    环景: win 10 专业版 office2016 问题描述: 表格中只有一列数据有重复值,怎么快速删除重复值 解决方案: 1.菜单栏-数据-删除重复值 2.选中要删除的那列D列-删除重复值 3.确定 ...

  2. 如何在Excel表中快速删除重复数据

    目录 1.例如:删除英文歌重复部分 2.按键盘快捷键Ctrl+Shift+向下方向键 选中歌词部分 3.依次点击[数据][删除重复项][以当前选定区域排序][删除重复项] 4.点击[全选][确定] 1 ...

  3. Excel.VBA 快速删除重复记录

    Excel.VBA 快速删除重复记录 日常工作中的工作表中经常会有重复记录,清除这些重复记录是一个繁琐的工作,即使在排序之后再进行手工筛选,也经常会出现遗漏,而使用VBA代码就可以快速准确地删除重复记 ...

  4. Excel快速删除重复值注意不保留唯一值的操作!

    今天我和大家分享的是:Excel快速删除重复值注意不保留唯一值的操作,详见下面的动图演示. 那小明呢是某某公司的活动推广部的一个核销人员,也就是说核销终端推行活动推广中所进行的发票费用的报销信息.那我 ...

  5. pandas使用drop_duplicates函数基于subset参数指定的数据列子集删除重复行、并设置keep参数保留重复行中的最后一个数据行

    pandas使用drop_duplicates函数基于subset参数指定的数据列子集删除重复行.并设置keep参数保留重复行中的最后一个数据行 目录

  6. 如何查找重复文件并快速删除,电脑查重复文件的方法

    在日常使用电脑的过程中,我们要下载.编辑.保存文件,难免会出现一些重复文件,这些重复文件不仅会给工作带来不便,也会占用硬盘宝贵的空间.因此,经常查找与清理电脑中的重复文件就显得格外重要.如何查找重复文 ...

  7. php删除一张表数据的时候 把另一张表的数据也删除,剔除第一张表的数据时,修改第二张表的相关字段的数值...

    删除第一张表的数据时,修改第二张表的相关字段的数值 表xf xf_id vip total 1 1 10 2 1 100 3 2 80 4 3 50 表vip vip jifen 1 1000 2 5 ...

  8. 只知道删除单张表的数据?不知道删除多张表的数据?

    一些废话 可能在某某一天,你在删除表的数据的时候,不想一张表一张表的去删除,想把两个表的数据同时删除:然后你就会去搜索,然后你就很有很有很有很有可能会看到 me 的这篇优质(呸!!!)文章了~ 嗯,没 ...

  9. 如何删除计算机某个盘搜索记录,怎么快速删除搜索记录 如何随意删除指定的那条记录...

    如何快速删除搜索记录,具体详细内容如下所示 我们网吧的时候如果不小心在IE上留下很多隐私的的搜索记录到时候你想哭都来不及,所以我们平时要养成一个好的习惯,我朋友就碰到一次他是一个女同志,有一次他在网吧 ...

最新文章

  1. 刷新你的数据中心冷却词汇
  2. 7、Power Map—实例:添加二维数据表以及批注
  3. 23、Power Query-XML与JSON数据获取
  4. 病毒源代码Java_病毒代码_bat病毒代码_java病毒代码(5)
  5. VS Code 自动修改和保存 代码风格 == eslint+prettier
  6. C#中泛型的相关知识点总结
  7. cmd命令行设置环境变量
  8. 24 MM配置-采购-配额管理-定义编码范围
  9. cxTreeList 控件说明
  10. 【hive】如何设置hive以及MapReduce的压缩方式?
  11. aboutsqlserver.com:mvp
  12. 熊猫烧香系列变种分析报告
  13. 希望 线段树 01背包
  14. ajax 请求与响应,实例解读ajax发送请求与数据响应
  15. 基于Android的城市环境监测系统
  16. 电商系统(毕业设计)
  17. 笔记19-IO流Properties集合
  18. 技术分享 | 如何实现小程序与 App 的跳转
  19. 热电阻温度计 电阻温度探测器 直接浸入式清洁传感器 精密RTD 美国Burns 胶囊式铂电阻温度检测器 迷你RTD整体热电偶套管 气温传感器 测温传感器 温度传感器 温度传感器生产厂家 温度变送器
  20. Git 提交提示 src refspec develop does not match any.

热门文章

  1. C++ set的一些用法
  2. 将你的Vim 打造成轻巧强大的IDE
  3. Python 项目打包成可执行程序命令
  4. Oracle修改密码文件_转载:Oracle修改用户密码
  5. spring mvc mysql 实例_Spring+Mybatis+SpringMVC+Maven+MySql搭建实例
  6. webpack css打包为一个css
  7. 经典案例:2012年最佳25个响应式网站设计作品《下篇》
  8. 一篇文章为你深度解析HTTPS 协议
  9. mpvue小程序以及微信直播踩坑总结
  10. 3. HTML中的容器标签