现在的位置: 首页 > 综合 > 正文

一条sql语句删除两条重复值的语句

2012年12月01日 ⁄ 综合 ⁄ 共 832字 ⁄ 字号 评论关闭
    在处理数据库表数据实,常常会遇到有重复数据的情况,这样的情况往往还就两条纪录重复,删除重复记录有好多方法,用程序循环来实现,也可用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,大功告成,有两条重复的记录就是这样被消灭掉了。

抱歉!评论已关闭.