题解 | 删除emp_no重复的记录,只保留最小的id对应的记录。
在MySQL中,不能直接在一个DELETE语句的目标表(本例中的titles_test)上使用子查询从同一张表中选择数据进行更新或删除操作 我们增加了一个额外的SELECT层,把原先的子查询结果作为一个派生表(在这里被命名为temp_table)。这样就解决了直接在目标表上执行子查询的问题,使得MySQL可以正确地处理这条DELETE语句。 delete from titles_test where id not in( select * from( select min(id) from titles_test group by emp_no )as temp_table );