MySQL更新A表时不能嵌套查询A表吗?

MySQL执行如下语句,报错提示:You can't specify target table 'a' for update in FROM clause;我要更新A表的一个字段难道不能再嵌套查询A表吗?

但如果给 UPDATE同时添加a表和t表,进行如下查询:

UPDATE a表 a,t表 t 
SET a.SETTLE_DATE = '20210625' 
WHERE
    a.REF_NO = t.REF_NO 
    AND t.SOURCE_REFERENCE in (条件集合)

这样就可以执行通过,很好奇这两者具体的区别是什么,为什么原问题中的方式会报出那样的错误?而后一种却又不报错?

 

有劳诸位大佬得空指导小弟了,感激不尽!

因为你同时对同一张表做了查询和修改操作。不能同时对一张表做多种操作。

UPDATE a, t SET a.SETTLE_DATE = '20210625' where a.REF_NO = t.REF_NO and t.SOURCE_REFERENCE ='xxx';