一旦工作,那就要努力的干,聪明的干,快速的干——用省下来的时间干自己喜欢干的事情。!

MySQL删除数据时报[Err] 1093 – You can’t specify target table ‘xxx’ for update in FROM clause错误

数据库 lampnick 3451℃ 0评论

在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错误

喜欢 (0)or分享 (0)
头像
发表我的评论
取消评论
表情

Hi,您需要填写昵称和邮箱!

  • 昵称 (必填)
  • 邮箱 (必填)
  • 网址