Sql Oracle 11g Update语句出现错误ORA-00904
我必须在Oracle数据库中运行以下更新查询Sql Oracle 11g Update语句出现错误ORA-00904,sql,oracle,oracle11g,sql-update,oracle12c,Sql,Oracle,Oracle11g,Sql Update,Oracle12c,我必须在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) 目标是查找Appliance.typeName和ApplianceType.name记录之间的匹
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表删除Appliance.typeName列并使用类似IdApplianceType的关系。)
在Oracle12c(和SQLServer2008+)中,它可以工作,而在版本11g中则不能工作。
我在下面报告错误
QL Error: ORA-00904: "APPLIANCE"."ID": invalid identifier
00904. 00000 - "%s: invalid identifier"
*Cause:
*Action:
任何帮助都将不胜感激:)
谢谢额外的
加入
似乎没有必要。为什么不使用这个更简单的版本呢
UPDATE Appliance
SET Appliance.IdApplianceType =
(SELECT AT.id
FROM ApplianceType AT
WHERE UPPER(Appliance.typeName) = UPPER(AT.name)
);
额外的
join
似乎没有必要。为什么不使用这个更简单的版本呢
UPDATE Appliance
SET Appliance.IdApplianceType =
(SELECT AT.id
FROM ApplianceType AT
WHERE UPPER(Appliance.typeName) = UPPER(AT.name)
);
我想没有期末考试我想没有期末考试