我知道 PL/SQL 中没有 Update-Join 语句。我曾经写过T-SQL。
我有两张 table 。
Alex_Table1
---------------------------
PK VAL
---------------------------
1 Value1
2 Value2
3 Value3
Alex_Table2
---------------------------
PK VAL
---------------------------
1 Value1_2
3 Value3_2
我想通过 PK 列将 VAL 从 Alex_Table2 更新为 Alex_Table1。
在 T-SQL 中,这很简单
update t1 set t1.VAL = t2.VAL
from
Alex_Table1 t1
inner join Alex_Table2 t2 on t1.PK = t2.PK;
结果正如我所料
Alex_Table1
---------------------------
PK VAL
---------------------------
1 Value1_2
2 Value2
3 Value3_2
我的问题是在PL/SQL中怎么做?谢谢!
更新
感谢 Cybernate 和 ypercube 给了我两个有用的解决方案。他们都工作。但是,我想让您知道这两个语句之间的性能。
我的实际表包含 80,000 条记录,只有 3,000 条需要更新。
MERGE
语句需要 0.533 秒。UPDATE EXISTS
语句需要超过 3 分钟(我没有测量实际时间。我在 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
关于join - PL/SQL 更新加入?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6824088/