我想用其他架构的数据更新表。为什么这不起作用?
UPDATE table a
SET a.value = b.value
FROM other_schema.table b
WHERE a.id = b.id AND b.value IS NOT NULL;
我已尝试使用id加入,但语法错误相同。
答案 0 :(得分:2)
Oracle不支持FROM
语句中的UPDATE
子句。你想要像
UPDATE table a
SET a.value = (SELECT b.value
FROM other_schema.table b
WHERE a.id = b.id
AND b.value IS NOT NULL)
WHERE EXISTS(SELECT b.value
FROM other_schema.table b
WHERE a.id = b.id
AND b.value IS NOT NULL)
如果您想更新EXISTS
中的每一行,a
可以省略b
,但我认为这不是您的目标。
如果您的联接产生了密钥保留的结果,您也可以
UPDATE( SELECT a.id, a.value a_value, b.value b_value
FROM table a
JOIN other_schema.table b
ON a.id = b.id AND
b.value IS NOT NULL )
SET a_value = b_value;