SQLServer删除重复数据记录

原创 2007年09月21日 13:41:00

*******************************************
SQLServer2000删除重复数据(总结)
*******************************************

 
一、具有主键的情况
 
I.具有唯一性的字段id(为唯一主键) 

delete  用户表    
where  id  not  in    
(  
select  max(id)  from  用户表  group  by  col1,col2,col3...  
)  


group  by  子句后跟的字段就是你用来判断重复的条件,如只有col1, 
那么只要col1字段内容相同即表示记录相同。 
 
II.具有联合主键
 
假设col1+','+col2+','...col5  为联合主键

(找出相同记录)

select  *  from    用户表  where  col1+','+col2+','...col5  in  
(  
  
select  max(col1+','+col2+','...col5)  from  用户表    
  
group  by  col1,col2,col3,col4
  
having  count(*)>1     
)  


group  by  子句后跟的字段就是你用来判断重复的条件, 
如只有col1,那么只要col1字段内容相同即表示记录相同。 
 
或者:
(找出相同记录)

select  *  from  用户表  where  exists  (select  1  from  用户表  x  where  用户表.col1 =  x.col1  and    
用户表.col2
=  x.col2  group  by  x.col1,x.col2  having  count(*)  >1)  


 
III:判断所有的字段 

   select  *  into  #aa  from  用户表  group  by  id1,id2,....  
   
delete  用户表    
   
insert  into  用户表 select  *  from  #aa  


 
二、没有主键的情况 
 
I.用临时表实现 

select  identity(int,1,1)  as  id,*  into  #temp  from  用户表  
delete  #temp    
where  id  not  in    
(  
   
select  max(id)  from  #  group  by  col1,col2,col3...  
)  
delete  用户表  ta  
inset  
into  ta(...) select  .....  from  #temp  

 
II.用改变表结构(加一个唯一字段)来实现

alter  用户表  add    newfield  int  identity(1,1)  
delete  用户表  
where  newfield  not  in  
(  
select  min(newfield)  from  用户表  group  by  除newfield外的所有字段  
)  
alter  用户表  drop  column  newfield


 

版权声明:本文为博主原创文章,未经博主允许不得转载。

相关文章推荐

sqlServer删除重复数据

  • 2013-08-12 16:40
  • 15KB
  • 下载

sqlserver中多行所有数据重复,无法更新或删除问题,通常是在没有主键的情况下的表

sqlserver中多行所有数据重复,无法更新或删除问题,通常是在没有主键的情况下的表.错误: 先确认一下表中有没有主键,要是没有就得使用临时表来实现删除重复的行。方法一:DELETE FROM 表名...

几种在SQLServer中删除重复数据方法

方法一 代码如下: declare @max integer,@id integer declare cur_rows cursor local for select 主字段,count(*) ...

SQL 已更新或删除的行值要么不能使该行成为唯一行(sqlserver中有多行所有的列重复的数据,无法更新或删除问题)

原文出自http://www.cnblogs.com/jhxk/articles/1614963.html sqlserver中多行所有数据重复,无法更新或删除问题,通常是在没有主键...

SQL语句 删除表user 中字段name 内容重复的记录,A表 ,B表 字段相同 有关联关系的表 对表两个表中的数据

今天去面试!我给大意了,直接写了个删除语句!又中招了。。。 在网上找了半天也没找到合适的代码! 回来想了想才知道自已太大意了!想了良久,想出了这么个办法, 今天去面试!我给大意了,直接写了个...

Oracle查询重复数据并删除,只保留一条记录

前言项目中,在“资源目录-在线编目”中,资源项子表存在多条重发数据,需要进行数据清理,删除重发的数据,最终只保留一条相同的数据。操作的表名:R_RESOURCE_DETAILS操作步骤一、重复记录根据...

MySQL大数据量表中删除重复记录

原文地址:http://blog.skyx.in/archives/135/    最近工作中需要抓取大量新闻,抓取的数据中由于一些原因存在一些重复数据,而整个数据表的记录数接近10万条,大...

oracle 快速删除大批量数据方法(全部删除,条件删除,删除大量重复记录)

全部删除如果是删除某个表的所有数据,并且不需要回滚,使用 TRUNCATE 就ok了。关于Trancate 参见这里http://blog.csdn.net/gnolhh168/archive/201...

oracle 快速删除大批量数据方法(全部删除,条件删除,删除大量重复记录)

全部删除 如果是删除某个表的所有数据,并且不需要回滚,使用 TRUNCATE 就ok了。关于Trancate 参见这里http://blog.csdn.net/gnolhh168/archive/2...

oracle 快速删除大批量数据方法(全部删除,条件删除,删除大量重复记录)

全部删除 如果是删除某个表的所有数据,并且不需要回滚,使用 TRUNCATE 就ok了。关于Trancate 参见这里http://blog.csdn.net/gnolhh168/archive...
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:深度学习:神经网络中的前向传播和反向传播算法推导
举报原因:
原因补充:

(最多只允许输入30个字)