`

快速删除重复记录,SQL Server如何实现?

阅读更多
我们在开发程序中经常会遇到垃圾数据,这包括很让人头痛的重复数据(重复记录,部分重复记录)!




一般实现删除重复记录可以写一段代码,用游标遍历,从而删除记录,但如果记录条数比较多,用游标的方法删除需要执行非常长的时间,我试过,数据量不是很多,但是效率很低,结果不是很理想!


现在给大家推荐简便的方法:


完全重复的记录的删除


所有字段都重复的情况,

select distinct * into #tmp from tablename drop table tablename select * into tablename from #tmp drop table # tmp

[b]关键字段重复的记录[/b]

是部分关键字段重复的记录,其他字段不重复(或者可以说忽略对于程序不需要提取的信息:部分重复的字段)。 

现在创建一个演示表:



/****** @author:wujincheng 对象:  Table [dbo].[T_CASE_test]    脚本日期: 01/28/2010 17:05:41 ******/
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO
SET ANSI_PADDING ON
GO
CREATE TABLE [dbo].[T_Test](
 [BUSICASEID] [bigint] NOT NULL,
 [BUSIOPERATE] [smallint] NOT NULL,
 [BUSIOPERATEOPINION] [varchar](max) COLLATE Chinese_PRC_CI_AS NULL,
 [BUSIOPERATEDATE] [datetime] NOT NULL
) ON [PRIMARY]

[code="sql"]GO
SET ANSI_PADDING OFF


看下表中重复的数据:



可以看出1730和1733的记录已经重复了


那么为了解决这一问题战略四步走:
战略一:给该表一个重生,创建表,拷贝该表结构

select * into T_Test_Demo from dbo.T_Test where 1<>1


战略二:给该表一个升华
   建立索引

  丢包袱

战略三:给该表一个飞跃

    拷贝不重复的数据:

insert into dbo.T_Test_Demo  select * from dbo.T_Test


会有提示:已忽略重复的键。

(16196 行受影响)


战略四:妙手回春

删除原来的数据,重新导入

delete dbo.T_Test

insert into dbo.T_Test  select * from dbo.T_Test_Demo





其实表中重复的部分数据,同样的原理。
在建立索引时

我们再看一些数据


1730的办件出现三个重复的新增办件信息,有两个修改办件信息和一个办结信息...
根据程序的需要就不能笼统的冠以之垃圾数据,
需要提取1730的新增办件信息,和一个修改的办件信息以及一个办结信息,那么原理同上,需要多建立一个索引,修改后即可。呵呵,时间不早了....

似乎麻烦了,看一个文档,很好解决
http://wenku.baidu.com/view/82b09b2f0066f5335a81216d.html
分享到:
评论

相关推荐

    sqlServer删除重复数据

    有两个意义上的重复记录,一是完全重复的记录,也即所有字段均重复的记录,二是部分关键字段重复的记录,比如Name字段重复,而其他字段不一定重复或都重复可以忽略。

    删除数据表中重复记录

    删除重复记录 删除数据表中的重复记录,包括MySQL、SQL Server、Oracle等

    SQL语句删除重复记录

    本文介绍了用四种方法教你如何用SQL语句删除重复记录。

    SQL删除重复行

    筛选重复行,删除重复行 使用游标来实现。 delete from vitae a where (a.peopleId,a.seq) in (select peopleId,seq from vitae group by peopleId,seq having count(*) &gt; 1) and rowid not in (select min(rowid)...

    处理SQL重复记录查询.

    查询SQL重复记录的几种方法总结,删除SQL重复记录查

    SQLServer2005考试题及答案

    SQLServer考试题及答案 选择题: 1、在MS SQL Server中,用来显示数据库信息的系统存储过程是( ) A sp_ dbhelp B sp_ db C sp_ help D sp_ helpdb 2、SQL语言中,删除一个表的命令是( ) A DELETE B DROP C ...

    sqlserver 删除重复记录处理(转)

    注:此处“重复”非完全重复,意为某字段数据重复 HZT表结构 ID int Title nvarchar(50) AddDate datetime 数据 一. 查找重复记录 1. 查找全部重复记录 Select * From 表 Where 重复字段 In (Select ... 删除重复记录

    Sqlserver2000经典脚本

    介绍就不多说了,下边是部分目录,觉得有用的话就顶一个 C:. │ sqlserver2000.txt │ ├─第01章 │ 1.9.1 设置内存选项.sql │ 1.9.2(2) 使用文件及文件组.sql │ 1.9.2(3) 调整...

    sqlserver自定义函数

    ---看看删除后还有没有重复记录:0 select gs903,gs1002,count(*) as count from w01 group by gs903,gs1002 having count(*)&gt;1 order by count desc ---删除后的数据和记录数:7-2=5 select * from w01 select ...

    SQL Server2000测试题

    这是SQL Server2000测试题。 1 有订单表,需要实现它的编号,格式如下:200211030001……200222039999等 Replace(substring(convert(varchar(20),getdate(),120),1,10),’-’,’ ‘)+max(订单号)+1 2 有表T1,T2,...

    Sql Server里删除数据表中重复记录的例子

    主要介绍了Sql Server里删除数据表中重复记录的例子,本文给出了3种操作方法,需要的朋友可以参考下

    数据库编程期末答疑,卷子讲解,SQL server相关操作讲解,如有侵权请联系删除

    乐山师范学院数据库编程期末答疑,卷子讲解,SQL server相关 如下是一个简化的员工考勤应用E-R图,请在SQL Server中创建名为YQKG的数据库,包括两个数据文件,一个日志文件,文件名按SQL Server对象命名规范定义,...

    分享SQL Server删除重复行的6个方法

    代码如下: delect table where id not in ( select max(id) from table group by col1,col2,col3… ) group by 子句后跟的字段就是你用来判断重复的条件,如只有col1,那么只要col1字段内容相同即表示记录相同。...

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

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

    SQL Server2008中删除重复记录的方法分享

    在Database中可能由于某种原因如用户输入,导入数据失败等 导致了重复记录. 如果你没有用主键,约束,或来其它机制实现数据完整性,那最后总是重复记录在你的数据库中.

    SQL Server 经典语句大全 CHM 版.rar

    比如创建、备份、删除数据库的SQL脚本,这些当然是比较简了,还有复杂点的像备份、创建索引、复合SQL语句、创建视图、高级运算查询、EXCEPT 运算符、INTERSECT 运算符、使用外连接、SQL分组、复制或拷贝表、在线视图...

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

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

    sql 删除表中的重复记录

    如下sql,找出重复的记录,和重复记录中ID值最小的记录(表中ID为自增长) select MIN(ID) as id, StructSN ,Date,UserID,StarCount,COUNT(StructSN) as c from T_Dor_StructStar where Date &gt;= '20160919' group ...

    SQL语句实现删除重复记录并只保留一条

    主要介绍了SQL语句实现删除重复记录并只保留一条,本文直接给出实现代码,并给出多种查询重复记录的方法,需要的朋友可以参考下

Global site tag (gtag.js) - Google Analytics