oracle update select

update 表A
    set (CHECK_DATE, OVER_DATE, BASIC_MONTH, BASIC_MONTH2, LAST_MONITOR_DATE, NEXT_MONITOR_DATE) 
    =  (select CHECK_DATE,
       OVER_DATE,
       to_number(to_char(CHECK_DATE,
                         'mm')) BASIC_MONTH,
       to_number(to_char(add_months(CHECK_DATE,
                                    7),
                         'mm')) BASIC_MONTH2,
       CHECK_DATE LAST_MONITOR_DATE,
       OVER_DATE NEXT_MONITOR_DATE
  from  表B t,
       表C h
 where t.valid_flag = 'Y'
   and t.p_code =  h.p_code
   and 表A.p_code =  t.p_code
   and  表A.ac_types =  t.ac_types)
 where exists( select * from 表B  t,表C h where t.valid_flag = 'Y'
   and t.check_date is not null
   and t.p_code = h.p_code
   and t_hr_license.p_code = t.p_code
   and t_hr_license.ac_types = t.ac_types) ;

如果不加上上面的红色部分内容,则会更新整张表的内容(虽然查询出来的数据是按照我们要求过滤的,但是对于更新的语句,是没有用的)。

所以必须再次加上红色部分的数据才可以,这样只会更新我们查出来的数据,而不会更新整张表

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值