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

   数据库的使用过程中由于程序方面的问题有时候会碰到重复数据,重复数据导致了数据库部分设置不能正确设置……

  方法一

  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子句中省去此列)

时间: 2024-11-08 23:21:01

SQL Server中删除重复数据的几个方法的相关文章

SQL Server中删除重复数据的几个方法_MsSql

方法一 复制代码 代码如下: 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

SQL Server中删除重复数据的方法

数据库的使用过程中由于程序方面的问题有时候会碰到重复数据,重复数据导致了数据库部分设置不能正确设置-- 方法一declare @max integer,@id integerdeclare cur_rows cursor local for select 主字段,count(*) from 表名 group by 主字段 having count(*) > 1open cur_rowsfetch cur_rows into @id,@maxwhile @@fetch_status=0begins

SQL Server中删除重复记录的SQL语句

方法:  代码如下 复制代码            select distinct * into #tmp from tablename  drop table tablename  select * into tablename from #tmp drop table # tmp 常有时候遇到需要删除SQL Server中的重复记录,这里有一些常用的删除重复记录的SQL, 最常用的 T-SQL 语句:  代码如下 复制代码 DELETE FROM [dbo].[myTable] WHERE

Sql Server中清空所有数据表中的记录_MsSql

Sql Server中清空所有数据表中的记录 清空所有数据表中的记录: 复制代码 代码如下: exec sp_msforeachtable  @Command1 ='truncate table ?' 删除所有数据表: 复制代码 代码如下: exec sp_msforeachtable 'delete   N''?''' 清空SQL Server数据库中所有表数据的方法(有约束的情况) 其实删除数据库中数据的方法并不复杂,为什么我还要多此一举呢,一是我这里介绍的是删除数据库的所有数据,因为数据之

用VB存取SQL Server中的图像数据

本文介绍MIS SQL Server对图像数据的存储机制和存取方法.针对VB开发工具,介绍了一种通过ADO Field 对象的GetChunk 方法和AppendChunk 方法来存取MIS SQL Server中的图像数据的方法. 在一个完善的医院信息MIS中,图像数据的存取是必不可少的,比如X光片.CT像片的保存.一方面,这些图像数据在远程诊疗为准确诊断病情提供了重要的依据,另一方面,也为快速查阅病人资料提供了基本条件.图像数据的存取在其它应用系统如GIS中也有广泛的应用. 1.SQL Se

Excel2003/2007中删除重复数据

大家在使用Excel表格总汇大批量数据时,难免会发现一些重复行和重复数据,这时我们就应该将那些重复的数据删除,以免会影响我们的工作,在Excel中删除重复数据和重复行的方法有N多,Excel2003删除重复数据和重复行方法: 第1种情况:重复行的内容完全一致 如下图所示,第2行和第4行的内容完全相同: 操作方法: 选中表中的所有记录(注意,此时应将每列的标题行也选择上,否则筛选完的数据表中将不再包含有该标题行),执行"数据"菜单→"筛选→高级筛 选"命令;在弹出的&

Excel 2007中删除重复数据的办法

  Excel 2007中删除重复数据的办法 如果经常跟数据打交道,最头痛的莫过于收集到大量信息中,有一部分重复数据,如果找到并删除他们实在是一件麻烦的事情,不过在Excel 2007中可以很轻松的解决. 第一步:找到重复数据 首先打开Excel,选中需要整理的数据区域,然后选择"开始"选项卡中的"条件格式",在下拉菜单中选择"突出显示单元格规则/重复值",在弹出的"重复值"对话框中选择一个合适的样式,以便突出显示重复值,没有

[Python]Python/PHP如何查询sql server中NTEXT类型数据

[Python]Python/PHP如何查询sql server中NTEXT类型数据 Version Date Creator Description 1.0.0.1 2006-11-23 郑昀 草稿   继续阅读之前,我们假设您熟悉以下知识: n         Python / PHP n         SQL Server 2000 SP4以上版本的Microsoft sql server n         pymssql n         NTEXT类型 本文讨论了在Python中

MySQL中删除重复数据的简单方法_Mysql

MYSQL里有五百万数据,但大多是重复的,真实的就180万,于是想怎样把这些重复的数据搞出来,在网上找了一圈,好多是用NOT IN这样的代码,这样效率很低,自己琢磨组合了一下,找到一个高效的处理方式,用这个方式,五百万数据,十来分钟就全部去除重复了,请各位参考. 第一步:从500万数据表data_content_152里提取出不重复的字段SFZHM对应的ID字段到TMP3表 create table tmp3 as select min(id) as col1 from data_content