我在选择要使用的子查询上遇到问题UPDATE。我正在尝试以下操作:
UPDATE
UPDATE foo SET bar=bar-1 WHERE baz= ( SELECT baz FROM foo WHERE fooID='1' )
foo具有主键的表名在哪里fooID?bar并且baz类型为INT。执行此操作时,出现以下错误:
foo
fooID
bar
baz
Error: A query failed. You can't specify target table 'foo' for update in FROM clause
从这篇网络文章
发生此错误的原因是,当您在内部选择中还使用同一表作为更新条件时,MySQL不允许对表进行更新。本文继续提供一种解决方案,即使用临时表。
使用此示例,您的更新应为:
update foo set bar = bar - 1 where baz in ( select baz from ( select baz from foo where fooID = '1' ) as arbitraryTableName )