最近一直在使用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)
完工。。。。。。。,有個小問題,如果對應參數下有唯一約束的時候,只能更新一個了?