MYSQL之You can't specify target table for update in FROM clause解决办法

更新或删除时报错 You can't specify target table for update in FROM clause


例如: 

 DELETE FROM cm_object WHERE id IN(SELECT id FROM cm_object WHERE address_id IN(SELECT id FROM cm_address WHERE building_id IN(SELECT id FROM cm_building WHERE building_name LIKE '图书馆%')));

报错

MYSQL之You can't specify target table for update in FROM clause解决办法


修改如下: 

DELETE FROM cm_object WHERE id IN(SELECT a.id FROM (SELECT id FROM cm_object WHERE address_id IN(SELECT id FROM cm_address WHERE building_id IN(SELECT id FROM cm_building WHERE building_name LIKE '图书馆%'))) a);

执行成功!

MYSQL之You can't specify target table for update in FROM clause解决办法


--------------------------------------错误小结------------------------------------------