mysql出错:You can't specify target table 'App' for update in FROM clause

执行 update App set App.packageName_id=(select id from PackageName,App where App.packageName=PackageName.packageName);
出错:ERROR 1093 (HY000): You can't specify target table 'App' for update in FROM clause
求优化?

[code="java"]UPDATE App,PackageName SET App.packageName_id=PackageName.id where
WHERE App.packageName=PackageName.packageName;[/code]

你需要的sql是否是:
update App set packageName_id=(select id from PackageName where App.packageName=PackageName.packageName);

set App.packageName_id 不需要App这个表名

你的Update语句要么加上table的别名App,要么就set不要App. :

[code="sql"]
update App App
set App.packageName_id =
(select id
from PackageName, App
where App.packageName = PackageName.packageName);
[/code]
或者
[code="sql"]
update App
set packageName_id =
(select id
from PackageName, App
where App.packageName = PackageName.packageName);
[/code]

update App App set App.packageName_id=(select id from PackageName,App where App.packageName=PackageName.packageName);

重命名App

或者省去别名
update App set packageName_id=(select id from PackageName,App where App.packageName=PackageName.packageName);

sql基本语法错误

update和其后的where语句条件中不能对同一个表进行操作,推荐用两条sql语句实现。