例子:在titles_test表中删除emp_no重复的记录,只保留最小的id对应的记录。
执行下面这条语句,你会得到如下错误SQL_ERROR_INFO: "You can't specify target table 'titles_test' for update in FROM clause"
delete
from titles_test
where id not in(
select min(id)
from titles_test
group by emp_no
)
这是因为在MySQL中支持在子查询的同时删除原表数据。如果你确实需要这样做,你需要给从原表中查到的数据表起别名,然后在此基础上再进行删除。
delete
from titles_test
where id not in
(select * from(
select min(id)
from titles_test
group by emp_no
) t1
)