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

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

SQLServer2000删除重复数据delete  用户表    
SQLServer2000删除重复数据
where  id  not  in    
SQLServer2000删除重复数据(  
SQLServer2000删除重复数据
select  max(id)  from  用户表  group  by  col1,col2,col3...  
SQLServer2000删除重复数据)  


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

(找出相同记录)

SQLServer2000删除重复数据select  *  from    用户表  where  col1+','+col2+','...col5  in  
SQLServer2000删除重复数据(  
SQLServer2000删除重复数据  
select  max(col1+','+col2+','...col5)  from  用户表    
SQLServer2000删除重复数据  
group  by  col1,col2,col3,col4
SQLServer2000删除重复数据  
having  count(*)>1     
SQLServer2000删除重复数据)  


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

SQLServer2000删除重复数据select  *  from  用户表  where  exists  (select  1  from  用户表  x  where  用户表.col1 =  x.col1  and    
SQLServer2000删除重复数据用户表.col2
=  x.col2  group  by  x.col1,x.col2  having  count(*)  >1)  


 
III:判断所有的字段 

SQLServer2000删除重复数据   select  *  into  #aa  from  用户表  group  by  id1,id2,....  
SQLServer2000删除重复数据   
delete  用户表    
SQLServer2000删除重复数据   
insert  into  用户表 select  *  from  #aa  


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

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

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

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

相关文章:

  • 2021-06-06
  • 2021-07-03
  • 2022-03-01
  • 2021-08-17
  • 2021-09-11
  • 2022-01-03
  • 2021-11-25
  • 2021-08-17
猜你喜欢
  • 2021-09-24
  • 2022-01-01
  • 2021-11-29
  • 2021-06-26
  • 2021-10-10
相关资源
相似解决方案