MySQL错误You can’t specify target table for update in FROM clause

错误代码:

[HY000][1093] You can't specify target table 'act_examine' for update in FROM clause

错误原因:

对同一张表做查询的同时做删除或者更新;
如下SQL语句:

UPDATE t1 SET status=0
WHERE id IN
(SELECT id FROM t1 WHERE status=1)

解决办法:

加一个中间表,让mysql检测不到是同一张表;

SQL语句:

UPDATE t1 SET status=0
WHERE id IN
(SELECT tmp.id FROM ( SELECT id FROM t1 WHERE status=1) tmp)

Author: thinkwei

发表回复

您的电子邮箱地址不会被公开。 必填项已用 * 标注