我們開發調試時程式偶爾會不小心插入了重複記錄,對于某字段pid必須全表唯一,當然有對應的記錄id(recid)是唯一的:
recid | pid | name |
1 | 1223 | a |
2 | 1223 | a |
3 | 2123 | b |
4 | 2123 | b |
5 | 3876 | c |
6 | 3876 | c |
7 | 3922 | d |
而需求是這樣子:
recid | pid | name |
1 | 1223 | a |
2 | 2123 | b |
3 | 3876 | c |
4 | 3922 | d |
我們要把重複的記錄:recid=2、4、6删掉,可以通過max()函數把按pid分組好的表提取出來:
delete from tb where recid in (
select MAX(recid) from tb where pid in (
select pid from tb group by pid having(COUNT(pid)>1)) group by pid)
這樣實作把重複的記錄删除!