原SQL:
update table_1
set field1 = '1'
WHERE file1 IN (
SELECT
field1
FROM table_1 k
WHERE k.field1 = '2'
)
运行后报标题错误
原因是:不能在FROM子句中指定要更新的目标表
解决办法,多套层查询,作为临时表,让Mysql认为你更新的和查询的不是同一张表就OK了
修改后SQL:
update table_1
set field1 = '1'
WHERE file1 IN (
select
tmp.field1
from (
SELECT
field1
FROM table_1 k
WHERE k.field1 = '2'
) tmp
)
解决MySQL更新与子查询冲突
本文介绍了一种常见的MySQL错误,即在更新语句的WHERE子句中直接使用目标表的子查询导致的错误,并提供了解决方案。通过创建一个临时表来间接引用目标表,从而避免了直接在更新语句中使用目标表的子查询,解决了这一问题。
8385

被折叠的 条评论
为什么被折叠?



