Sql Oracle中跨架构的更新
我想用另一个架构中的数据更新一个表。为什么这不起作用Sql Oracle中跨架构的更新,sql,oracle11g,Sql,Oracle11g,我想用另一个架构中的数据更新一个表。为什么这不起作用 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上的连接尝试过,但有相同的语法错误 Oracle不支持UPDATE语句中的FROM子句。你会想要像这样的东西 UPDATE table a SET a.value = (SELECT b.value
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上的连接尝试过,但有相同的语法错误 Oracle不支持
UPDATE
语句中的FROM
子句。你会想要像这样的东西
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)
如果您想更新a
中的每一行,无论b
中是否有匹配项,您可以省略EXISTS
,但我认为这不是您的目标
如果联接产生密钥保留结果,则还可以
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;
Oracle不支持
UPDATE
语句中的FROM
子句。你会想要像这样的东西
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)
如果您想更新a
中的每一行,无论b
中是否有匹配项,您可以省略EXISTS
,但我认为这不是您的目标
如果联接产生密钥保留结果,则还可以
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;
说出你得到的错误总是有帮助的。“语法错误”就是错误。然后你需要一个新的客户机/IDE,因为有些东西正在以一种毫无帮助的方式向你隐藏实际的错误。我想这会让我忘记ORA-00932。我同意IDE在这种情况下没有多大帮助/说出你得到的错误总是有帮助的。“语法错误”就是错误。然后你需要一个新的客户机/IDE,因为有些东西正在以一种毫无帮助的方式向你隐藏实际的错误。我想这会让我忘记ORA-00932。我同意IDE在这种情况下没有多大帮助/