你看看测试表吧!user(id,name)
id是主键,name是可以相同的。
当我们想删除重复的记录(当然要保存一条了,不能全删)。
delete from user where id not in(select min(id) as uid from user u group by name)
报错!而这个方法还是SQL cook book里的方法。老外的书还有bug的!
在网上查询了很多博客都是用一些极端的方法。当然也有我使用的方法。再包装一次:
delete from user where id not in(select c.d from (select min(id) as d from user group by name)c)
这样子,删除的数据就和查询的数据不是同一表了。