天天看點

sql删除重複記錄語句備忘

我們開發調試時程式偶爾會不小心插入了重複記錄,對于某字段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)

這樣實作把重複的記錄删除!

sql