1、Delete t1
From TableName t1
Where Not Exists
(Select 1 From
(Select IDNumber,IDCount=Count(1) From TableName
Group By IDNumber Having Count(1)>1) t2
Where t1.IDNumber=t2.IDNumber)
2、如果数据量大,上面的语句效能可能达不到要求 可以把子查询用With as 替换一下,
3、再或者,你把Group By IDnumber Having Count(1)>2 的放到一个表XXX里,把原表Truncate 掉,再把XXX里的数据放回到你的原表;(这个方法不能在数据被使用的时候进行)
delete from 表名
where IDNumber in(select IDNumber from 表名 group by IDNumber having count(IDNumber)<=1)
delete from tb
where id in (select id From tb Group By id Having Count(1)=1 )