我需要编写一个更新语句,该语句使用多个表来确定要更新的行,因为在Oracle中,不允许多个表.以下查询将返回"ORA-00971:缺少SET关键字"错误
UPDATE
TABLE1 a,
TABLE2 b
SET
a.COL1 = 'VALUE'
WHERE
a.FK = b.PK
AND b.COL2 IN ('SET OF VALUES')
Run Code Online (Sandbox Code Playgroud)
在oracle上查找UPDATE语句语法,我找到了以下链接,它显示您可以使用子查询代替表名.
当我尝试写这样的查询时,我得到了一个"ORA-01779:无法修改映射到非密钥保留表的列"
UPDATE
(
SELECT
a.COL1
FROM
TABLE1 a,
TABLE2 b
WHERE
a.FK = b.PK
AND b.COL2 IN ('SET OF VALUES')
) update_tbl
SET
update_tbl.COL1 = 'VALUE'
Run Code Online (Sandbox Code Playgroud)
我确实使用EXISTS语句重写了查询(如下所示)并且它工作正常,但仍然想知道如何完成.
UPDATE
TABLE1 update_tbl
SET
update_tbl.COL1 = 'VALUE'
WHERE
EXISTS (
SELECT
1
FROM
TABLE1 a
TABLE2 b
WHERE
a.FK = b.PK
AND b.COL2 IN ('SET OF VALUES')
AND update_tbl.PK = …Run Code Online (Sandbox Code Playgroud)