Oracle中mergeinto的用法

合集下载
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

Oracle中mergeinto的⽤法Oracle 中 merge into 的⽤法
merge into 的⽤法
对⼀张表,在不同的条件下实现不同的操作(update/insert),在 oracle 中可以⽤ merge into
语法:
MERGE INTO table_name alias1
USING (table|view|sub_query) alias2
(join condition)
WHEN MATCHED THEN
UPDATE table_name
SET col1 = col_val1,
col2 = col_val2
WHEN NOT MATCHED THEN
INSERT (column_list) VALUES (column_values);
要对表中某⼏条记录进⾏判断并操作,代码实现如下:
-- user_table 表中,如果存在 user_skey = 99999 的记录,则修改该记录的 last_name 字段,否则插⼊⼀条新纪录
merge into user_table t1 using (select 99999 as user_skey2, 9999 as user_id2 from dual) t2 on (er_skey = er_skey2) when matched then
update set st_name = '宝强'
when not matched then
insert (er_skey , er_id, last_name, first_name, ba_no , dept_id) values (1111,222, '俊杰', '林', 111 ,10)
注:update 和 insert 的记录总和与 using 后⾯的集合中的元素个数⼀致
对表中全部记录进⾏操作,代码实现如下:
-- user_table 表中,如果存在 user_skey = 11111 的记录,则修改所有记录的 last_name 字段,否则插⼊⼀条新的记录
merge into user_table t1 using dual on ((select count(*) from user_table where user_skey = 11111) > 0)
when matched then
update set st_name = '杰伦'
when not matched then
insert (er_skey , er_id, last_name, first_name, ba_no , dept_id) values (1112,222, '俊杰', '林', 111 ,10)
注:update 的记录条数与 count 的值⼀致。

相关文档
最新文档