sql server重复数据处理

  在处理数据库表数据实,常常会遇到有重复数据的情况,这样的情况往往还就两条纪录重复,删除重复记录有好多方法,用程序循环来实现,也可用sql语句来实现,下面就介绍用sql语句实现的方法。

      首先从上千条记录中找出是重复的记录,sql语句:

   select
     keyColumn
from
     testTable
group by keyColumn
having count(*)>1

       其中 keyColumn 就是关键列,以此来区分,其他数据。

       其次,找出要删除的一列,怎么找,当然要根据能区分两条重复记录的标识了,别告诉我没有,那就建立一个自增id吧,下面也已自增id来区分数据的:

   select
    
max(id)
from
     testTable
where
     keyColumn
   in
(
    
select
         keyColumn
    
from
         testTable
    
group by keyColumn
    
having count(*)>1
)
group by keyColumn,id

       上面是要删除两条记录中最大id的记录,min函数就是删除最小的。

       最后就是真正的要删除了,sql语句:

   delete from keyColumn
where
     id
in
(
    
select
        
max(id)
    
from
         testTable
    
where
         id
in
     (
        
select
             keyColumn
        
from
             testTable
        
group by keyColumn
        
having count(*)>1
     )
    
group by keyColumn,id
)

       ok,大功告成,有两条重复的记录就是这样被消灭掉了。

你可能感兴趣的:(sql server重复数据处理)