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

    在处理数据库表数据实,常常会遇到有重复数据的情况,这样的情况往往还就两条纪录重复,删除重复记录有好多方法,用程序循环来实现,也可用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
)

 

posted @ 2012-06-04 15:52  程序员徐坤  阅读(557)  评论(0编辑  收藏  举报