在MySQL中执行下列命令,DELETE FROM xxx WHERE pid IN (SELECT id FROM xxx WHERE id = pid);
出现[Err] 1093 - You can't specify target table 'xxx' for update in FROM clause 这个错误。
错误的意思是说,在同一语句中,不能先select出同一表中的某些值,再update这个表。
只需要将上面的SQL稍作修改就可以了,
DELETE FROM xxx WHERE pid IN (
SELECT * from (
SELECT id FROM xxx WHERE id = pid
) tmp
);
也就是将select出的结果再通过中间表select一遍,这样就规避了错误。注意,这个问题只出现于mysql,mssql和oracle不会出现此问题。
转载请注明:MitNick » MySQL删除数据时报[Err] 1093 – You can’t specify target table ‘xxx’ for update in FROM clause错误