PLSQL:MERGE的用法

/*Merge into 详细介绍
MERGE语句是Oracle9i新增的语法,用来合并UPDATE和INSERT语句。
通过MERGE语句,根据一张表或子查询的连接条件对另外一张表进行查询,
连接条件匹配上的进行UPDATE,无法匹配的执行INSERT。
这个语法仅需要一次全表扫描就完成了全部工作,执行效率要高于INSERT+UPDATE。
*/

MERGE INTO fzq1 aa --fzq1表是需要更新的表
USING fzq bb -- 关联表
ON (aa.id = bb.id) --关联条件
WHEN MATCHED THEN --匹配关联条件,作更新处理
  UPDATE
     SET aa.chengji = bb.chengji + 1, aa.name = bb.name --此处只是说明可以同时更新多个字段。  
WHEN NOT MATCHED THEN --不匹配关联条件,作插入处理。如果只是作更新,下面的语句可以省略。
  INSERT VALUES (bb.id, bb.name, bb.sex, bb.kecheng, bb.chengji);

以上为用法,下面来一个实例

MERGE INTO cux.test_t1 t --需要更新或插入的表
USING cux_ap_terms_lines ctl -- 关联表
ON (t.t_id = ctl.line_id) --关联条件
WHEN MATCHED THEN --匹配关联条件,则作更新处理
  UPDATE SET t.cloum1 = ctl.header_id, t.cloum2 = ctl.term_id
WHEN NOT MATCHED THEN --不匹配关联条件,则作插入处理。如果只是作更新,则下面的语句可以省略。
  INSERT VALUES (ctl.line_id, ctl.header_id, ctl.term_id);
SELECT * FROM cux.test_t1;


你可能感兴趣的:(Oracle,sql)