我们开发调试时程序偶尔会不小心插入了重复记录,对于某字段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)
这样实现把重复的记录删除!