Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/visual-studio-2008/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Mysql SQL您可以';不指定目标表_Mysql_Sql - Fatal编程技术网

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。