码迷,mamicode.com
首页 > 数据库 > 详细

Oracle merge into 通过一个表字段,更新另一个表字段

时间:2020-05-18 20:43:53      阅读:98      评论:0      收藏:0      [点我收藏+]

标签:date   stat   roc   proc   表数据   语言   方法   The   merge   

Oracle 通过一个表字段,更新另一个表字段:

方法一:通过update实现

update g_sn_status A
    set A.out_process_time = (select B.rec_time from g_sn_defect B where B.serial_number = A.serial_number)
where A.serial_number in (select serial_number from g_sn_defect);

  如果where部分不存在,A、B两表不是一一对应,则会造成null更新;

 

方法二:通过merge into实现 

merge into g_sn_status A
    using g_sn_defect B on (A.serial_number = B.serial_number)
when matched then
    update set A.out_process_time = B.rec_time where A.serial_number like ‘2018%‘
when not matched then
    insert (A.serial_number,A.out_process_time) values (B.serial_number,B.rec_time) where
 B.rec_time between to_date(‘2020051008‘,‘YYYYMMDDHH24‘) and to_date(‘2020052020‘,‘YYYYMMDDHH24‘);

作用:判断B表和A表是否满足ON中条件,如果满足则用B表去更新A表,如果不满足,则将B表数据插入A表但是有很多可选项,如下:
1.正常模式

2.只update或者只insert

3.带条件的update或带条件的insert

4.带delete的update【鸡肋,而且会增加SQL语言的复杂度】

  该SQL类似SQLPLUS的case when...语句,想想也知道为啥有很多可选项了。

 

总结,显然方法二功能更强大。

 

Oracle merge into 通过一个表字段,更新另一个表字段

标签:date   stat   roc   proc   表数据   语言   方法   The   merge   

原文地址:https://www.cnblogs.com/pandora2050/p/12912508.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!