Oracle merge into的用法,以及MySQL的相同功能語句
阿新 • • 發佈:2019-01-24
今天在重構以前的程式碼發現一個效率比較低的SQL,插入一條資料的時候先查詢,如果不為空,則進行更新操作,如果為空則插入,則插入。
一,Oracle
merge into emp a
using (select '111' as id,'周文軍' as name from dual) b
on (a.id= b.id)
when matched then
update set a.name= b.name
when not matched then
insert (id,name) values(b.id,b.name);
--emp表中有id和name欄位,當插入一個id=‘111’,name=‘周文軍’的資料時,進行判斷
1、如果原表存在id=111的人,則執行update語句。
2、如果表中不存在id=111的人,則執行insert語句。
--解釋
將插入的資料放置到b表中,和a表進行匹配,匹配規則Wieusing中的規則,如果匹配成功,則執行uodate,否則執行insert,此寫法比先查詢再做判斷的效率提高很多。