Oracle 11g 更新语句错误 ORA-00904

Oracle 11g Update statement with Error ORA-00904

我必须 运行 将以下 UPDATE 查询插入到 Oracle 数据库中。

UPDATE Appliance
 SET Appliance.IdApplianceType =
 (
 SELECT AT.id
 FROM Appliance A INNER JOIN ApplianceType AT
 ON UPPER(A.typeName) = UPPER(AT.name)
 AND Appliance.id = A.id)

中的objective是查找Appliance.typeName和ApplianceType.name的记录匹配,设置Appliance.IdApplianceType中的ApplianceType.id(主键)( FK ApplianceType)(注意:在第二步中规范化 Appliance table 删除 Appliance.typeName 列并使用 IdApplianceType 类似关系。

在 oracle 12c(和 sqlserver 2008+)中它可以工作,而 在版本 11g 中不工作。

我报错如下

QL Error: ORA-00904: "APPLIANCE"."ID": invalid identifier
00904. 00000 - "%s: invalid identifier"
*Cause:
*Action:

任何帮助将不胜感激:)

谢谢

额外的 join 似乎没有必要。为什么不直接使用这个更简单的版本呢?

UPDATE Appliance
    SET Appliance.IdApplianceType =
        (SELECT AT.id
         FROM ApplianceType AT
         WHERE UPPER(Appliance.typeName) = UPPER(AT.name)
        );