Oracle中merge into的使用

來源:互聯網
上載者:User

標籤:style   blog   ar   io   color   使用   sp   on   資料   

我們操作資料庫的時候,有時候會遇到insertOrUpdate這種需求。

如果資料庫中存在資料就update,如果不存在就insert。

以前的時候,需要額外select查詢一下,如果有資料就update,如果沒有資料就insert。

而現在Orcale資料庫都提供了 MERGE 方法來處理這種需求。

MERGE 命令使用一條語句從一個或者多個資料來源中完成對錶的更新和插入資料。

 

MERGE 文法:

MERGE INTO [your table-name] [rename your table here] USING ( [write your query here] )[rename your query-sql and using just like a table] ON ([conditional expression here] AND [...]...) WHEN MATHED THEN [here you can execute some update sql or something else ] WHEN NOT MATHED THEN [execute something else here ! ] 

 

使用例子:

create table TEST (ID INTEGER,VALUE VARCHAR2(255) );   insert into TEST values (1, ‘test1‘);   insert into TEST values (2, ‘test2‘);   

 

我們想插入一條資料  {ID=2,NAME=‘newtest2‘}  那麼可以這麼寫

MERGE INTO  TEST T1USING (SELECT ‘2‘ as A FROM dual) T2 on (T1.ID=T2.ID)WHEN MATCHED THEN UPDATE SET T1.NAME=‘newtest2‘WHEN NOT MATCHED THEN  INSERT (T1.ID, T1.NAME) VALUES (‘1‘, ‘newtest2‘); 

如果ID為2的資料存在那麼 UPDATE,如果不存在INSERT

 

注意事項:

Merge Into的原理是,從using 搜出來的結果逐條與on條件匹配,然後決定是update還是Insert。 當USING後面的sql沒有查詢到資料的時候,Merge Into語句是不會執行update和Insert操作的。

所以要想讓Merge Into正常運行,要保證USING 後面的SELECT有資料,個人喜歡使用DUAL表作為USING後的表,方便自己控制。

 

Oracle中merge into的使用

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.