你可以试试这个任何一个甲骨文
正常的更新
UPDATE
INCIDENT
SET
INCIDENT.OWNER_ID =
(SELECT
INCIDENTDESCRIPTION.USER_ID
FROM
INCIDENTDESCRIPTION
WHERE
INCIDENT.OWNER_ID = INCIDENTDESCRIPTION.USER_ID)
WHERE
EXISTS
(SELECT
INCIDENTDESCRIPTION.USER_ID
FROM
INCIDENTDESCRIPTION
WHERE
INCIDENT.OWNER_ID = INCIDENTDESCRIPTION.USER_ID);
使用内嵌视图(如果它是由甲骨文认为更新)
注意:如果你面对一个非关键保存行错误添加一个索引来解决相同的问题,使其更新
UPDATE
(SELECT
INCIDENT.OWNER_ID AS OLD,
INCIDENTDESCRIPTION.USER_ID AS NEW
FROM
INCIDENT
INNER JOIN
INCIDENTDESCRIPTION
ON INCIDENT.INCI_ID = INCIDENTDESCRIPTION.INCI_ID) T
SET
T.OLD = T.NEW;
使用合并
MERGE INTO
INCIDENT
USING
(SELECT
T1.ROWID AS RID,
T2.INCI_ID
FROM
INCIDENT T1
INNER JOIN
INCIDENTDESCRIPTION T2
ON INCIDENT.INCI_ID = INCIDENTDESCRIPTION.INCI_ID)
ON
(ROWID = RID)
WHEN MATCHED
THEN
UPDATE SET INCIDENT.INCI_ID = INCIDENTDESCRIPTION.INCI_ID;
Oracle是否'update'支持'join'?你的语法看起来更像MySQL。 –
@GordonLinoff一个很大的否......但有一些技巧,例如在MERGE USING子句或在线视图 – SriniV
中使用连接,请显示表格模式,示例数据和预期结果。 – OldProgrammer