Oracle 如何编写DML以基于另一个表的字段更新表中的字段?
假设有两个表'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)] 提前谢谢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
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子句如何简化查询。