天天看点

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