当前位置:  数据库>sqlserver

sql server删除表中重复数据行的方法

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

    本文导语:  1、首先,运行GROUP BY 以确定有多少组重复的 PK 值及每组的重复数。 2、选择重复的键值放入临时表中。例如: SELECT col1, col2, col3=count(*)  INTO holdkey  FROM t1  GROUP BY col1, col2  HAVING count(*) > 1 3、选择重复的...

1、首先,运行GROUP BY 以确定有多少组重复的 PK 值及每组的重复数。

2、选择重复的键值放入临时表中。例如:

SELECT col1, col2, col3=count(*) 
INTO holdkey 
FROM t1 
GROUP BY col1, col2 
HAVING count(*) > 1

3、选择重复的行放入临时表中,以清除进程中的重复值。例如:

SELECT DISTINCT t1.* 
INTO test_tab 
FROM t1, holdkey 
WHERE t1.col1 = holdkey.col1 
AND t1.col2 = holdkey.col2

4、此时,test_tab 表应有唯一的 PK;但是,如果 t1 有重复的 PK 而行唯一(如上面的 SSN 示例),情况就不是这样了。
请验证 test_tab 中的各个键是否唯一,是否没有键重复而行唯一的情况。
如果是这样,您必须停在该处,确定对于给定重复的键值,您希望保留哪些行。
例如,以下查询:

SELECT col1, col2, count(*) 
FROM test_tab 
GROUP BY col1, col2

应为各行返回计数 1。如果结果是 1,请继续执行下面的步骤 5。
如果不是 1,则存在键重复而行唯一的情况,且需要您决定要保存哪些行。
通常,这将需要舍弃行或为此行创建新的唯一的键值。为 test_tab 表中每个此种重复 PK 执行这两个步骤之一。

5、从原始表中删除重复的行。例如:

DELETE t1 
FROM t1, holdkey 
WHERE t1.col1 = holdkey.col1 
AND t1.col2 = holdkey.col2

6、将唯一行放回原始表中。例如:

INSERT t1 SELECT * FROM test_tab

您可能感兴趣的文章:
sql server 查询重复记录的多种方法
sql server 重复记录的取最新一笔的实现方法
sql server删除重复记录且只余一条的例子
SQL Server删除重复数据的几种方法
去除重复数据的SQL语句
如何在SQL Server2008中删除重复记录


    
 
 

您可能感兴趣的文章:

  • 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语句
  • sql server 2005维护计划无法删除怎么办呢?
  • 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定义及介绍
  • sql server 删除表1某些数据的同时自动删除表2的相关数据的sql代码 iis7站长之家
  • 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