报错信息:
[SQL]
DELETE FROM material_stock_unpack WHERE parent_id in (SELECT row_id from material_stock_unpack t where t.relation_id = 'M0000032822');
[Err] 1093 - You can't specify target table 'material_stock_unpack' for update in FROM clause
执行的SQL语句是: DELETE FROM material_stock_unpack WHERE parent_id in (SELECT row_id from material_stock_unpack t where t.relation_id = 'M0000032822');
报错信息是:You can't specify target table 'material_stock_unpack' for update in FROM clause
报错意思大概是指:不能先select出同一表中的某些值,再update这个表(在同一语句中)。
也就是说将select出的结果再通过中间表select一遍,这样就规避了错误。注意,这个问题只出现于mysql,mssql和Oracle不会出现此问题。尴尬。
所以,把上面的SQL 调整如下:
DELETE FROM material_stock_unpack WHERE parent_id = (SELECT a.row_id FROM (SELECT row_id from material_stock_unpack where relation_id = 'M0000032822') a);