oracle 更新一个表的字段到更一个表里两种方法

本文介绍了Oracle数据库中两种更新记录的方法:一种是通过SET语句结合子查询实现;另一种是利用9i版本后引入的MergeInto方法。对比这两种方式,MergeInto不仅语法更为简洁,在性能上也更胜一筹。文章还提供了具体的SQL示例,帮助读者理解如何应用这些更新技术。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

方法1. 结合具体示例如下

UPDATE T_REPORT_MONTHLOGASLEVEL T
   SET T.KEY1 =
       (SELECT P.STRU_ORDER
          FROM PUB_STRU P
         WHERE P.STRU_LEVEL = 2
           AND T.LEVEL_2_COMPANY = P.ORGAN_ALIAS)

方法2.结合具体示例如下

MERGE INTO T_REPORT_MONTHLOGASLEVEL T
USING (SELECT P.STRU_ORDER, P.ORGAN_ALIAS
         FROM PUB_STRU P
        WHERE P.STRU_LEVEL = 2) NP
ON (NP.ORGAN_ALIAS = T.LEVEL_2_COMPANY)
WHEN MATCHED THEN
  UPDATE SET T.KEY1 = NP.STRU_ORDER

oracle9i以后新增加的merge into 方法 方法2性能远远优于方法1

 

merge into 使用方法如下(摘自网上)

语法如下 
MERGE INTO [your table-name] [rename your table here] 
USING ( [write your query here] )[rename your query-sql and using just like a table] 
ON ([conditional expression here] AND [...]...) 
WHEN MATHED THEN [here you can execute some update sql or something else ] 
WHEN NOT MATHED THEN [execute something else here ! ] 

我们先看看一个简单的例子,来介绍一个merge into的用法 
merge into products p using newproducts np on (p.product_id = np.product_id) 
when matched then 
update set p.product_name = np.product_name 
when not matched then 
insert values(np.product_id, np.product_name, np.category) 

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值