DELETE FROM test WHERE id NOT IN ( SELECT id AS id FROM ( SELECT MIN(id) AS id #和外边的条件使用一样的名字 FROM test GROUP BY NAME ) AS t #嵌套出来的子查询都会生成一个派生表,而MYSQL规定派生表必须有一个别名 );
另外网上有这种:
#删除重复记录 #通过使用rowid来作为过滤条件,性能高效 DELETE FROM emp e WHERE e.ROWID > (SELECT MIN( x.ROWID ) FROM emp x WHERE x.empno = e.empno);
这种方法在MYSQL是不行的,因为mysql规定删除动作不能带有本表的查询动作