oracle 多表联合更新

需要用到exists

 

UPDATE TBL_REALTIME_AD_USER_RPT T3
       SET T3.AD_PRICE = (SELECT PRICE
                            FROM TBL_ROTATE_AD T4
                           WHERE T3.AD_ID = T4.ID
                             AND TO_CHAR(T4.CREATE_DATE, 'YYYYMMDD') =
                                 V_REPORT_DATE)
     WHERE EXISTS
     (SELECT 1
              FROM TBL_ROTATE_AD T4
             WHERE T3.AD_ID = T4.ID
               AND TO_CHAR(T4.CREATE_DATE, 'YYYYMMDD') = V_REPORT_DATE)
       AND T3.REPORT_DATE = V_REPORT_DATE;

 

 

原贴:http://immortal2512.javaeye.com/blog/406175

来个例子:

目前有两个表 T1,T2

表:T1                                     表:T2

ID     NAME                           ID     NAME

1       aaaa                             2      aaaa

2       bbbb                             5      bbbb

3       cccc                             8      cccc

4       dddd                             7      dddd

 

现在根据T1和T2中的NAME列,T2表中ID列的值要改成T1表中的ID列中的值

语句如下:

UPDATE T2 a
       SET a.SID = (SELECT ID
                            FROM T1 b
                           WHERE a.NAME = b.NAME
                            )
     WHERE EXISTS
     (SELECT 1
              FROM T1 b
             WHERE a.Name = b.name
              ) ;

结果: 

表:T2

ID     NAME                       

1       aaaa  

2       bbbb     

3       cccc       

4       dddd

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值