如何解决Oracle 11g更新语句,错误为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(主键)注意:在第二步中进行标准化设备表删除了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)
);
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。