oracle update select

来源:互联网 发布:android 源码编译rom 编辑:程序博客网 时间:2024/06/04 18:48
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) ;

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

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

原创粉丝点击