日期:2014-05-18  浏览次数:20403 次

怎樣根據某些值重復刪除數據庫里記錄?
例如有表A
        a                 b                   c
    6AF                 1                   40
    6AF                 1                   80
    7AE                 2                   50
    7AE                 2                   60

現在把a   ,   b   列重復的刪除只留一筆(哪筆都無所謂)
結果應該是
        a                 b                   c
    6AF                 1                   40
    7AE                 2                   50


------解决方案--------------------
如果有某个字段(不包含A,B)能确定大小就行.
如果不能,必须使用临时表.

1,如果有某个字段能确定打下,如C,按我上述方法.

2,如果没有.使用临时表.
select id=identity(int,1,1) , * into temp from tb
delete temp where id not in (select min(id) from tb group by a,b)
select * from temp