错误表现
1 | update unaudited_combo_merchandise_details set is_main = 1 where id in (select id from unaudited_combo_merchandise_details group by `relation_key`) |
以上sql语句大致就是在同一张表里根据条件查询结果,然后在根据结果修改同一张表里的数据,那么在执行上面的语句的时候就会报这么一个错误:You can't specify target table 'unaudited_combo_merchandise_details' for
update in FROM clause
,翻译过来大概就是:不能指定目标表’unaudited_combo_merchandise_details’
更新FROM子句;
问题解决
将SELECT出的结果再通过中间表SELECT一遍,这样就规避了错误。
1 | update unaudited_combo_merchandise_details set is_main = 1 where id in |
需要注意的是,MSSQL和Oracle不会出现此问题。