最近一直在使用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条件下,如果对应条件下的数据不存在,则插入一笔新的满足该条件的数据。否则更新该数据内容(具体怎么更新,自拟)
那么我可以这么写:
MERGE INTO table A USING (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)
完工。。。。。。。,有个小问题,如果对应参数下有唯一约束的时候,只能更新一个了?