1,建立兩測試表
create table merge_test1 (test1_id number,test1_name varchar2(100));
create table merge_test2 (test2_id number,test2_name varchar2(100));
2,測試表插入資料
insert into merge_test1(test1_id,test1_name) values (1,'a');
insert into merge_test1(test1_id,test1_name) values (2,'b');
insert into merge_test1(test1_id,test1_name) values (3,'c');
insert into merge_test2(test2_id,test2_name) values (2,'e');
insert into merge_test2(test2_id,test2_name) values (3,'f');
3,查詢兩測試表
select * from merge_test1;
select * from merge_test2;
4,現在要實現更新merge_test1的與merge_test2對應的值
merge into merge_test1 t1
using (select * from merge_test2) t2 --using裡的集合也可以是多個表生成的集合
on (t1.test1_id=t2.test2_id)
when matched then update set t1.test1_name=t2.test2_name --更新test1_id值一樣的行
delete where t1.test1_id=t2.test2_id--刪除test1_id值一樣的行
when not matched then insert (t1.test1_id,t1.test1_name) values (5,'insert');--沒匹配上的插入一條新的資料
使用merge into總結
第二次使用merge into時依舊出現了問題,覺得這個語句即是常用語句並且效率也高,所以總結下 1.用於對比的字段不能放在update下面,比如id之類的 2.string truncted。報出這個異常是由於某些欄位在做更新的過程中,目標表的字段長度小於匯入值,需要修改目標表字段的長度。3.由於...
Oracle中merge into的使用
語法 merge into table name alias1 using table view sub query alias2 on join condition when matched then update table name set col1 col val1,col2 col2 va...
Oracle的merge into使用小結
今天專案上碰到乙個問題,要給某個字段排序,因為報表鑽取的一些原因不能用已經存在的排序維表進行關聯排序,但是原表本身的排序又不是想要的,資料量相當大,所以就用merge into來處理這個問題,先給出處理的測試表。目標 用表dept的dname欄位更新cc表的dname欄位 表dept 表cc mer...