SQL —— 兩個表,根據一個字段給對應的另一個字段update值

TABLE1
這裏寫圖片描述

TABLE2
這裏寫圖片描述

要根據name進行匹配,給表一(TABLE1)中的id update 成TABLE2中的id值
sql 1:

merge into TABLE1  
using TABLE2  
on(TABLE1.name=TABLE2.name)  
when matched then  
update set TABLE1.id = TABLE2.id 

如果tab2中有多條對應tab1中一條的情況也會出錯:ORA-30926: unable to get a stable set of rows in the source tables。可以通過在using中的subquery中將重複記錄過濾來避免這種錯誤,merge終極版
sql 2:

merge into TABLE1  
using  (select * FROM TABLE2 X  WHERE  X.ROWID =  
(SELECT MAX(Y.ROWID) FROM  TABLE2 Y  WHERE  X.name = Y.name)) TABLE2  
on(TABLE1.name=TABLE2.name)  
when matched then  
update set TABLE1.id = TABLE2.id  

結果
這裏寫圖片描述

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章