Oracle实现一张表根据另一张表更新(有则更新无则插入)

如果在Oracle 有表value_dazong_index_mom_day(在table里存起来了),它所有字段值的更新依据表DZWWW_MOM(根据原始数据建立起的视图),这里假设这两张表的结构完全一样(事实上可以不一样,只需第一个表要更新的字段能匹配第二个表的字段,且两张表唯一索引对应即可,例如根据唯一id,对两张表其他字段进行匹配更新),其结构如下:

其中表DZWWW_MOM视图是依据原始数据进行计算的指标,并将计算好的指标按照该结构存到Tab中的表value_dazong_index_mom_day,原始数据每日更新,要求存到Tab表的指标也每日更新。

显然,DZWWW_MOM视图是依据原始数据计算的指标,它查询出的数据也是每日更新的,只需让Tab表依据该视图表更新即可,代码如下:

merge into value_dazong_index_mom_day t1  

using DZWWW_MOM t2

on(t1.日期=t2.日期)  

when matched then  

update set t1.大宗化工价格指数环比 = t2.大宗化工价格指数环比,
           t1.浮法玻璃价格指数环比 = t2.浮法玻璃价格指数环比, 
           t1.水泥商品价格指数环比 = t2.大宗水泥价格指数环比,
           t1.大宗有色价格指数环比 = t2.大宗有色价格指数环比,
           t1.大宗钢铁价格指数环比 = t2.大宗钢铁价格指数环比
when not matched then

insert (日期,大宗化工价格指数环比,浮法玻璃价格指数环比,水泥商品价格指数环比,大宗有色价格指数环比,大宗钢铁价格指数环比) VALUES(t2.日期,t2.大宗化工价格指数环比,t2.浮法玻璃价格指数环比,大宗水泥价格指数环比,t2.大宗有色价格指数环比,t2.大宗钢铁价格指数环比) 

学习依据: http://www.cnblogs.com/anzhao/p/5050555.html 

1)Oracle实现有则更新,无则插入

    使用MERGE INTO语句

    如下:已知传过来的参数三个 userid 、name 、sex.要求如果用户表(T_USER)中存在相同的userid则更新name和sex字段,如果用户表(T_USER)中不存在userid,则插入一条记录

    MERGE INTO T_USER T1 

    USING(SELECT userid AS id,name AS username,sex AS usersex FROM dual) T2

    ON(T1.userid=T2.id)

    WHEN MATCHED THEN

    update set t1.name=t2.username,t1.sex=t2.usersex

    WHEN NOT MATCHED THEN

    insert(userid,name,sex) VALUES(t2.id,t2.username,t2.usersex);

 

2)Mysql实现有则更新,无则插入

    MYSQL需要实现以上功能,需要怎么做呢?

    使用ON DUPLICATE KEY UPDATE语句

    已知传过来的参数三个 id 、username 、usersex 它们的值分别为: 1   张三  男.

 

    INSERT INTO T_USER(userid,name,sex) VALUES (id,username,usersex) ON DUPLICATE KEY UPDATE name=username,sex=usersex;

 

    注意:如果在Mysql中使用这种形式,则要求在数据表中userid字段必须是主键或建立了唯一的索引

学习依据
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值