1、初始數據:
SQL> select * from a; ID NAME ---------------------- ---------------------- 1 1 2 1 3 1 4 1 5 1 SQL> select * from b; ID NAME ---------------------- ---------------------- 1 2 2 2 11 11
2、目標:1)a表中id與b表中id一樣的話,更新a.name以b.name為准;2)b表中id不在a表中的話,復制b表的記錄,插入到a表中
3、功能實現:
merge into A a using B b on (a.id = b.id) --on為匹配條件 when matched then --匹配時 更新a.name update set a.name = b.name where 1=1 --這裡可以添加where條件 when not matched then --不匹配時 復制並插入b insert values(b.id,b.name) where 1=1
就是對兩個表進行對比吧,可以對比插入、更新和刪除
在when matched then 和 when not matched then 後面只能加insert() values 或者 update set ....,.... ,不能附加條件,而且then 後面的語句不能使用其他語句。 另外注意到,B的域只在using裡面的查詢有用吧 ,如果你要使用 也得是 在Using () M 用m吧