ORACLE 函數 MEGER INTO 的使用

最近一直在使用oracle,所以又開始學習新的函數知識~~~~~。

業務場景:

商城完成了一次A商品的成功交易,判斷商品A在XX日期是否有出售記錄,如果有出售記錄,則當天的交易次數+1,否則插入一筆新的交易。因爲在表中,一筆交易的字段較多,流水號,交易賬號等等各種。正常情況下只需要更新對應日期下的交易次數即可。B爲關聯表。。。。

在業務場景中,就可以考慮使用MEGER INTO,以下爲該函數的語法:

MERGE INTO [target-table] A USING [source-table sql] B ON([conditional expression] and [...]...)

WHEN MATCHED THEN

  [UPDATE sql]

WHEN NOT MATCHED THEN

  [INSERT sql]

翻譯一下:在對錶A,表B等進行操作的時候(具體連接方式以及操作條件可以自擬),在XX條件下,如果對應條件下的數據不存在,則插入一筆新的滿足該條件的數據。否則更新該數據內容(具體怎麼更新,自擬)

那麼我可以這麼寫:

MEGER INTO  table A  USEING (select   B.xx,B.xx1  FROM table B)

ON  

A.xx = B.xx

WHEN MATCHED THEN (譯:如果要查詢的數據存在)

UPDATE SET A.xx  = A.xx + 1  WHERE A.x = '' x ''

WHEN NOT MATCHED THEN(譯:如果要查詢的數據不存在)

INSERT

(A.xx,A.xxx,A.xxx,A.xxxx)

VALUES

(xxxx,xxx,xxx,xxx)

完工。。。。。。。,有個小問題,如果對應參數下有唯一約束的時候,只能更新一個了?

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