Mysql SQL查询更新语句语法错误

Mysql SQL查询更新语句语法错误,mysql,Mysql,我需要运行SQL更新查询,如下所示 UPDATE table_1 SET field_1 = value_1 WHERE field_2 IN ( SELECT t1.field_2 FROM table_1 AS t1 ,table_2 AS t2 WHERE t2.field_3 = value_2 AND t1.field_2 = t2.field_2 ); 但问题是它的错误是

我需要运行SQL更新查询,如下所示

UPDATE table_1
SET field_1 = value_1
WHERE field_2 IN (
        SELECT t1.field_2
        FROM table_1 AS t1
            ,table_2 AS t2
        WHERE t2.field_3 = value_2
            AND t1.field_2 = t2.field_2
        );
但问题是它的错误是什么样的-

无法在FROM子句中为update指定目标表“t1”

当我单独运行子查询并将其reslut放在主查询中时,就会得到结果。有人能帮忙吗


提前感谢

正如错误所说,MySQL不能同时更新和选择同一个表。但是中间有另一个子查询,你无论如何都可以做
UPDATE table_1 
SET field_1 = value_1 
where field_2 in 
(
  select * from
  (
    SELECT t1.field_2 
    from table_1 as t1
    join table_2 as t2 on t2.field_3 = value_2 
    and t1.field_2= t2.field_2
  ) tmp
)

你能解释一下附加子查询级别有什么意义吗?@juergen d,非常感谢,它工作起来很有魅力,但请解释一下附加子查询级别的用途是什么?用途是你用它创建一个临时表,而不需要直接从更新的表中选择。谢谢@juergend,太好了