Mysql和Oracle中更新表记录,若不存在,则直接插入记录的操作

有类似这样的场景,比如对某种数据进行统计,每增加一条,就对表A中对应统计记录的值+1,若统计表中,没有对应这种情况的统计数据,则需新插入一条记录,后续在遇到这种数据时,对数据进行更新。

这个时候可以直接用数据库sql实现。

mysql: on Duplicate key update
oracel: merge
//创建一个表
create table  daily_hit_counter(
day date mot null,
slot number not null,
cnt number not null,
private key(day,slot)
)
 
mysql:
INSERT INTO daily_hit_counter(DAY,slot,cnt) VALUES (CURRENT_DATE,RAND()*100,1)
     ON DUPLICATE KEY UPDATE cnt=cnt+1;
 
oracel:
//此sql并未执行验证,格式大概如此
merge into  daily_hit_counter t1
using (select  trunc(sysdate,'dd') day,dbms_random.value slot,1 cnt from dual) t2
on(t1.day=t2.day and  t1.slot=t2.slot) 
when not matched then insert values (t2.day,t2.slot,1)
when matched then update set t1.cnt= t1.cnt+1;
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值