Mysql SQL您可以';不指定目标表
中的所有结构表Mysql SQL您可以';不指定目标表,mysql,sql,Mysql,Sql,中的所有结构表 UPDATE MenuPosition SET Position = (SELECT Position FROM MenuPosition WHERE MenuId ='2') WHERE MenuId ='1' 使用查询时,我们会得到错误: You can't specify target table 'MenuPosition' for update in FROM clause 请告诉我我的错误在哪里,如何纠正?是的。这是MySQL中的一个限制。
UPDATE MenuPosition
SET Position = (SELECT Position FROM MenuPosition WHERE MenuId ='2')
WHERE MenuId ='1'
使用查询时,我们会得到错误:
You can't specify target table 'MenuPosition' for update in FROM clause
请告诉我我的错误在哪里,如何纠正?是的。这是MySQL中的一个限制。相反,请使用
join
:
UPDATE MenuPosition mp cross join
(SELECT Position FROM MenuPosition WHERE MenuId ='2'
) mp2
SET mp.Position = mp2.Position
WHERE MenuId = '1';
另一种方法
UPDATE MenuPosition as tbl1
JOIN MenuPosition as tbl2 on
tbl1.MenuId = '1'
AND tbl2.MenuId = '2'
SET tbl1.Position = tbl2.Position
你确定是同一个错误吗?在提交答案之前,我测试了这段代码,它是有效的。可能与MySQL版本有关。我用的是5.5.29。