MySQL 您不能在 FROM 子句中指定目标 table X 进行更新
MySQL You can't specify target table X for update in FROM clause
任何 SQL 可以重写以下查询的专家:
UPDATE cmsTemplate
SET master = NULL
WHERE master IS NOT NULL
AND master NOT IN (SELECT nodeId
FROM
( SELECT * FROM cmsTemplate a) b
)
这样就不会产生下面的错误:
You can't specify target table 'cmsTemplate' for update in FROM clause
此处记录的问题:
http://dev.mysql.com/doc/refman/5.6/en/update.html
谢谢,
史蒂夫
更新:查询说明
查询思路如下:
- SETmaster字段TO NULL
- WHERE master 字段 IS NOT NULL
- AND WHERE master 字段 不等于任何 的值nodeId字段记录(内同table)
您可以将更新与加入一起使用:
update cmsTemplate c1 left join cmsTemplate c2
on c1.`master` = c2.nodeId
set c1.`master` = null
where c2.nodeId is null;
任何 SQL 可以重写以下查询的专家:
UPDATE cmsTemplate
SET master = NULL
WHERE master IS NOT NULL
AND master NOT IN (SELECT nodeId
FROM
( SELECT * FROM cmsTemplate a) b
)
这样就不会产生下面的错误:
You can't specify target table 'cmsTemplate' for update in FROM clause
此处记录的问题:
http://dev.mysql.com/doc/refman/5.6/en/update.html
谢谢, 史蒂夫
更新:查询说明
查询思路如下:
- SETmaster字段TO NULL
- WHERE master 字段 IS NOT NULL
- AND WHERE master 字段 不等于任何 的值nodeId字段记录(内同table)
您可以将更新与加入一起使用:
update cmsTemplate c1 left join cmsTemplate c2
on c1.`master` = c2.nodeId
set c1.`master` = null
where c2.nodeId is null;