sql删除重复记录语句备忘

我们开发调试时程序偶尔会不小心插入了重复记录,对于某字段pid必须全表唯一,当然有对应的记录id(recid)是唯一的:

recidpidname
11223a
21223a
32123b
42123b
53876c
63876c
73922d
而需求是这样子:

recidpidname
11223a
22123b
33876c
43922d
我们要把重复的记录: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)

这样实现把重复的记录删除!


版权声明:本文为zhzhi2008原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接和本声明。