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
結果