繁体   English   中英

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

[英]Oracle 11g Update statement with Error ORA-00904

我必须在 Oracle 数据库中运行以下 UPDATE 查询。

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)

目标是找到 Appliance.typeName 和 ApplianceType.name 记录之间的匹配项,并在 Appliance.IdApplianceType (FK ApplianceType) 中设置 ApplianceType.id(主键)(注意:在第 2 步规范化 Appliance 表中,移除 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)
        );

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM