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在这种情况下没有多大帮助/