用下面得大佬得语句再mysql7以上得版本中执行会有报错,mysql不允许在查询的同时删除原表数据,如果向删除,必须给原始数据表取一个别名再删除,查询出结果,给结果取别名之后再删除
delete from titles_test where id not in ( select * from ( # 给结果取个别名叫l,这样我们就不是从原始表中查询结果删除而是L表查询结果并删除 select min(id) from titles_test group by emp_no ) l );
思路很简单,先用emp_no分组之后,找到最小的得ID
select min(id) from titles_test group by emp_no;
再delete筛选出所有不在这里面得id并删除
delete from titles_test where id not in ( select min(id) from titles_test group by emp_no );