删除数据库中重复数据的几个方法

 更新时间:2006年12月14日 00:00:00   作者:  
方法一

declare @max integer,@id integer

declare cur_rows cursor local for select 主字段,count(*) from 表名 group by 主字段 having count(*) > 1

open cur_rows

fetch cur_rows into @id,@max

while @@fetch_status=0

begin

select @max = @max -1

set rowcount @max

delete from 表名 where 主字段 = @id

fetch cur_rows into @id,@max

end

close cur_rows

set rowcount 0

方法二

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

1、对于第一种重复,比较容易解决,使用 select distinct * from tableName 就可以得到无重复记录的结果集。

如果该表需要删除重复的记录(重复记录保留1条),可以按以下方法删除

select distinct * into #Tmp from tableName

drop table tableName

select * into tableName from #Tmp

drop table #Tmp

发生这种重复的原因是表设计不周产生的,增加唯一索引列即可解决。

2、这类重复问题通常要求保留重复记录中的第一条记录,操作方法如下:

假设有重复的字段为Name,Address,要求得到这两个字段唯一的结果集

select identity(int,1,1) as autoID, * into #Tmp from tableName

select min(autoID) as autoID into #Tmp2 from #Tmp group by Name,autoID

select * from #Tmp where autoID in(select autoID from #tmp2)

最后一个select即得到了Name,Address不重复的结果集(但多了一个autoID字段,实际写时可以写在select子句中省去此列)

相关文章

  • sql语句优化之SQL Server(详细整理)

    sql语句优化之SQL Server(详细整理)

    这篇文章主要介绍了sql语句优化之SQL Server篇,整理的比较详细,推荐收藏
    2014-07-07
  • 安装完成后如何找回SQL Server实例安装时的序列号

    安装完成后如何找回SQL Server实例安装时的序列号

    当我们需要再次安装sqlserver时,如何找回sqlserver实例安装时的序列号呢?下面,跟着脚本之家小编一起学习安装完成后如何找回SQL Server实例安装时的序列号,需要的朋友可以参考下
    2015-09-09
  • 深入理解SQL盲注

    深入理解SQL盲注

    本文主要介绍了深入理解SQL盲注,主要介绍了布尔盲注和时间盲注,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2024-01-01
  • SQL Server数据库之备份和恢复数据库

    SQL Server数据库之备份和恢复数据库

    在一些对数据可靠性要求很高的行业,若发生意外停机或数据丢失,其损失是十分惨重的,因此,本文详细介绍了数据库备份和恢复数据库方法,感兴趣的同学可以借鉴一下
    2023-03-03
  • SQL SERVER触发器详解

    SQL SERVER触发器详解

    本文详细讲解了SQL SERVER中触发器的用法,文中通过示例代码介绍的非常详细。对大家的学习或工作具有一定的参考借鉴价值,需要的朋友可以参考下
    2022-02-02
  • SQL中查找某几个字段完全一样的数据

    SQL中查找某几个字段完全一样的数据

    本文分享SQL语句实现表中字段的组合累加排序的实例代码,希望能给大家做一个参考。
    2016-06-06
  • SQL Server高可用的常见问题分析

    SQL Server高可用的常见问题分析

    SQL Server高可用不就是微软的那几个技术吗,如Replication, Failover Clustering,本文将详细介绍,有需求的朋友可以参考下
    2012-11-11
  • SQL查询连续号码段的巧妙解法

    SQL查询连续号码段的巧妙解法

    SQL查询连续号码段的巧妙解法...
    2007-04-04
  • 史上超强最常用SQL语句大全

    史上超强最常用SQL语句大全

    这篇文章主要介绍了史上超强最常用SQL语句大全,本文结合示例代码给大家介绍的非常详细,对大家的学习或工作具有一定的参考借鉴价值,需要的朋友可以参考下
    2023-02-02
  • SQL Server中的SELECT会阻塞SELECT吗

    SQL Server中的SELECT会阻塞SELECT吗

    这篇文章主要给大家介绍了SQL Server中的SELECT会阻塞SELECT的相关资料,文中通过示例代码介绍的非常详细,需要的朋友可以参考借鉴,下面随着小编来一起学习学习吧
    2018-12-12

最新评论