当前位置:  数据库>sqlserver

sql server 删除重复数据的三种方法

    来源: 互联网  发布时间:2014-08-29

    本文导语:  本节内容: 在sql server中删除重复的数据。 方法一,对于数据量不大,效率要求不高的,比较通用的一类方法,使用游标进行删除 sql语句:   代码示例: //定义两个变量 delcare @max integer,@id integer //定义一个本地游标 declare cu...

本节内容:
在sql server中删除重复的数据。

方法一,对于数据量不大,效率要求不高的,比较通用的一类方法,使用游标进行删除

sql语句:
 

代码示例:

//定义两个变量
delcare @max integer,@id integer

//定义一个本地游标
declare cusCursor cursor local for select id,count(*) from tableName group by id having count(*)>1

//打开游标
open cusCursor

//将当前游标读取的内容放到变量中
fetch cusCursor into @id,@max  

//判断游标执行前面fetch语句后的状态,如果成功,则开始循环
while @@fetch_status=0  
begin
  select @max=@max-1

  //设置后面语句处理的条数 
  set rowcount @max

  //删除重复的数据,只保留一条
  delete from tableName where id=@id  

  //游标向下移一行,继续读取数据
  fetch cusCursor into @id,@max  
end

//关闭游标
close cusCursor

//删除游标
deallocate cusCursor
set rowcount 0

方法二,使用临时表的方法删除重复记录,该方法效率较高,可是有局限性

sql语句:
 

代码示例:

//将源表中的数据distinct以后,就只剩下唯一一条数据了,再将该条数据写入到临时表#tempTable中
select distinct * into #tempTable from tableName

//清空源表中的数据
truncate table tableName

//将临时表中的数据写入到源表中
select * into tableName from #temTable

//删除临时表
drop #tempTable 

该方法的不足:
当数据库的表中存在image,text类型字段时会报错,提示该类型字段无法进行distinct操作。

方法三,针对第二种方法的局限性,而且数据量也较大,对效率也有一定的要求的情况下,可以第三种方法。

sql语句:
 

代码示例:

//将源表的数据结构复制到临时表#tempTable中
select * into #tempTable from tableName where 11

//在临时表中创建索引,并忽略重复列数据
Create unique index temp on #tempTable(重复列名) with IGNORE_DUP_KEY

//将源表中的数据拷贝到临时表中,拷贝的同时会忽略重复列的数据,也即只保留了一份数据。
insert into #tempTable select * from tableName

//清空源表
truncate table tableName

//将临时表中的数据写入到源表中
insert into tableName select * from #tempTable  

//删除临时表
drop table #tempTable
 

总结:
以上介绍的三种sql server删除数据库重复记录的方法,其中第三种方法在效率和通用性上都较好,在10W级数据量上都能有较好的表现。
建议参考、使用第三种方法。

>>> 您可能感兴趣的文章:
如何在SQL Server2008中删除重复记录
SQL Server删除重复数据的几种方法
sql server删除重复记录且只余一条的例子
T-SQL排序、重复数据的剔除保留及分页存储过程的例子
sql server 重复记录的取最新一笔的实现方法
T-SQL排序-重复数据的剔除保留及分页存储过程
sql server 查询重复记录的多种方法
删除SQL重复记录的方法介绍
sql server中删除重复数据的方法介绍
sql server一条语句删除表中重复记录
SQL分享:查询只显示一次重复的值
sql查询重复记录的方法举例
一条sql语句删除表中重复记录


    
 
 

您可能感兴趣的文章:

  • sql server 删除表1某些数据的同时自动删除表2的相关数据的sql代码
  • 安装SQL2008时提示删除SQL2005Express工具的解决方法
  • sql server 2005删除用户时“数据库主体在该数据库中拥有架构,无法删除”错误的解决办法
  • SQLServer用t-sql命令批量删除数据库中指定表(游标循环删除)
  • sql语言中delete删除命令语句详解
  • 重装MS SQL Server 2000前必须彻底删除原安装文件的方法
  • Sql Server 2000删除数据库备份文件
  • sql 存储过程批量删除数据的语句
  • Sql Server 删除主键与重建主键的例子
  • jsp+SQL删除记录出错,请指教!
  • SQL Server 不删除信息重新恢复自动编号列的序号的方法
  • oracle数据库添加或删除一列的sql语句
  • sql server临时表删除方法
  • sql2005 数据表存在与否及删除的判断语句
  • sql server 临时表的删除示例
  • MySQL中批量删除指定前缀表的sql语句
  • 博客 iis7站长之家
  • sql 插入单引号、添加、删除字段的例子
  • 使用SQL Server判断文件是否存在后再删除(详解)
  • sql级联删除的方法介绍
  • java命名空间java.sql接口statement的类成员方法: executeupdate定义及介绍
  • C#使用带like的sql语句时防sql注入的方法
  • java命名空间java.sql接口connection的类成员方法: nativesql定义及介绍
  • sql无效字符引起的执行sql语句报错的解决方法
  • java命名空间java.sql接口preparedstatement的类成员方法: executeupdate定义及介绍
  • SQL Server降权运行 SQL Server 2000以GUESTS权限运行设置方法
  • java命名空间java.sql接口rowid的类成员方法: getbytes定义及介绍
  • (X86/X64)安装sql server 2005 过程中提示“无法启动sql server的 启动”的解决方法
  • java命名空间java.sql接口ref的类成员方法: getbasetypename定义及介绍
  • sql数据库多用户模式修改方法
  • java命名空间java.sql接口databasemetadata的类成员方法: getsqlkeywords定义及介绍
  •  
    本站(WWW.)旨在分享和传播互联网科技相关的资讯和技术,将尽最大努力为读者提供更好的信息聚合和浏览方式。
    本站(WWW.)站内文章除注明原创外,均为转载、整理或搜集自网络。欢迎任何形式的转载,转载请注明出处。












  • 相关文章推荐
  • SQL Server 2008如何进行数据库分离和附加详细介绍
  • 取数据库前几条数据(sql server、oracle、mysql)的sql写法
  • 查询SQL Server中所有数据库的数据文件位置的sql脚本
  • SQL Server数据库的修复SQL语句
  • 使用php语句将数据库*.sql文件导入数据库
  • 如何实现连接一次数据库,提交多个sql语句。(sql的批处理)
  • sql2005 大数据量检索分页的sql代码
  • t-sql/mssql用命令行导入数据脚本的SQL语句示例
  • 请问Linux数据库编程是否也可以支持通用的SQL语言进行数据库编写.
  • jsp jdbc为什麽不能把数据insert到sql server 中,也不能从sql server中提取数据?!
  • sql数据库如何查询修改数据库恢复模式?
  • sql添加数据后返回受影响行数据
  • sql语句获取数据库服务器上所有数据库的名字
  • sql 语句 取数据库服务器上所有数据库的名字
  • Access 数据类型与 MS SQL 数据类型的相应
  • linux下能调用*.sql备份的数据库数据么?
  • sql数据库修改数据库用户
  • 数据库前端 SQL Workbench-J
  • Oracle 数据库开发工具 Oracle SQL Developer
  • 在Java中以MS SQL2000为后端数据库?
  • SQL建立数据库及删除数据库命令
  • java命名空间javax.sql.rowset.spi类syncprovider的类成员方法: getrowsetwriter定义及介绍
  • 请问,这是什么错误!java.sql.SQLException: [Microsoft][ODBC SQL Server Driver][Named Pipes]??????? SQL Server?虽然分少,但一定给,只要您是前5名回复者中最好的以为!
  • java命名空间java.sql接口sqlinput的类成员方法: readblob定义及介绍
  • SQL查询分析工具 SQL Workbench/J
  • java命名空间java.sql接口sqlinput的类成员方法: readarray定义及介绍
  • oracle导出sql语句的结果集和保存执行的sql语句(深入分析)
  • java命名空间java.sql接口sqlinput的类成员方法: readsqlxml定义及介绍
  • SQL Server统计SQL语句执行时间的脚本
  • java命名空间java.sql接口sqlinput的类成员方法: readrowid定义及介绍
  • SQL客户端软件 PKLite SQL Client


  • 站内导航:


    特别声明:169IT网站部分信息来自互联网,如果侵犯您的权利,请及时告知,本站将立即删除!

    ©2012-2021,,E-mail:www_#163.com(请将#改为@)

    浙ICP备11055608号-3