我知道PL / sql中没有Update-Join语句.我曾经写过T-sql.
我有两张桌子.@H_404_3@
Alex_Table1 --------------------------- PK VAL --------------------------- 1 Value1 2 Value2 3 Value3 Alex_Table2 --------------------------- PK VAL --------------------------- 1 Value1_2 3 Value3_2
我想将来自Alex_Table2的VAL更新为通过PK列加入的Alex_Table1.@H_404_3@
update t1 set t1.VAL = t2.VAL from Alex_Table1 t1 inner join Alex_Table2 t2 on t1.PK = t2.PK;
结果就是我的预期@H_404_3@
Alex_Table1 --------------------------- PK VAL --------------------------- 1 Value1_2 2 Value2 3 Value3_2
我的问题是如何在PL / sql中做?谢谢!@H_404_3@
更新@H_404_3@
谢谢Cybernate和ypercube给了我两个有用的解决方案.他们都工作.但是,我想告诉您这两个陈述之间的表现.@H_404_3@
我的实际表包含80,000条记录,只有3,000条需要更新.@H_404_3@
MERGE语句需要0.533秒.@H_404_3@
UPDATE EXISTS语句需要3分钟(我没有测量实际时间.3分钟后我终止了我的过程.)@H_404_3@
解决方法
使用MERGE语句:
MERGE INTO Alex_Table1 t1 USING Alex_Table2 t2 ON (t1.PK = t2.PK) WHEN MATCHED THEN UPDATE SET t1.VAL = t2.VAL