Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/django/20.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Oracle 如何编写DML以基于另一个表的字段更新表中的字段?_Oracle - Fatal编程技术网

Oracle 如何编写DML以基于另一个表的字段更新表中的字段?

Oracle 如何编写DML以基于另一个表的字段更新表中的字段?,oracle,Oracle,假设有两个表'A'和'B'。A(F1编号,F2编号)和B(F1编号,F2编号)。我希望dml能做到这一点:- A.F1=B.F1的所有行,设置A.F2=B.F2 (即) 如果A:[(1,34)(2,67)]B: [(1,99)(2100)] DML应将A更新为以下内容: A:[(1,99)(2100)] 提前谢谢 Trinity听起来你只是需要一个相关的更新 UPDATE a SET f2 = (SELECT f2 FROM b W

假设有两个表'A'和'B'。A(F1编号,F2编号)和B(F1编号,F2编号)。我希望dml能做到这一点:-

A.F1=B.F1的所有行,设置A.F2=B.F2

(即)

如果A:[(1,34)(2,67)]B: [(1,99)(2100)]

DML应将A更新为以下内容:

A:[(1,99)(2100)]

提前谢谢


Trinity

听起来你只是需要一个相关的更新

UPDATE a
   SET f2 = (SELECT f2
               FROM b
              WHERE a.f1 = b.f1)
 WHERE EXISTS (
    SELECT 1
      FROM b
     WHERE a.f1 = b.f1 );

听起来你只是需要一个相关的更新

UPDATE a
   SET f2 = (SELECT f2
               FROM b
              WHERE a.f1 = b.f1)
 WHERE EXISTS (
    SELECT 1
      FROM b
     WHERE a.f1 = b.f1 );

谢谢你。DML是否可能更短。。可能正在使用“with”子句?@trinity-你说的“shorter”是什么意思?如果可以保证A中的每一行在B中都有一个匹配的行,那么就可以消除WHERE子句。但是我不知道使用WITH子句如何简化查询。谢谢。DML是否可能更短。。可能正在使用“with”子句?@trinity-你说的“shorter”是什么意思?如果可以保证A中的每一行在B中都有一个匹配的行,那么就可以消除WHERE子句。但是我看不出使用WITH子句如何简化查询。