问题在于,无论出于何种原因,MySQL都不允许您编写如下查询:
UPDATe myTableSET myTable.A =( SELECT B FROM myTable INNER JOIN ...)
也就是说,如果你正在做一个
UPDATe/
INSERT/
DELETE桌子上,你不能引用在内部查询表 (您 可以
但是从外部表引用一个字段…)
解决方案是
myTable将子查询中的实例替换为
(SELECT * FROM myTable),如下所示
UPDATe myTableSET myTable.A =( SELECT B FROM (SELECt * FROM myTable) AS something INNER JOIN ...)
显然,这会导致将必需的字段隐式复制到临时表中,因此可以使用。
我在这里找到了这个解决方案。该文章的注释:
您不想
SELECt * FROMtable在现实生活中只进入子查询;我只是想使例子简单。实际上,您只应选择该最内部查询中所需的列,并添加一个良好的WHERe子句以限制结果。



