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)
);
我必须 运行 将以下 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)
);