Oracle的MERGE和MySql的replace into

在日常开发中经常会遇到先查询 看看结果集有没有如果有就执行操作没有又执行咋样的操作

(1).Oracle的MERGE

MERGE INTO EMP1 T
USING (
SELECT A.ID,A.NAME,A.PASSWORD FROM EMP A
      )S ON 
         (T.ID=S.ID)
WHEN MATCHED THEN
     UPDATE SET 
            T.NAME=S.NAME,
            T.PASSWORD=S.PASSWORD
WHEN NOT MATCHED THEN 
     INSERT (
            ID,
            NAME,
            PASSWORD
            )VALUES(
            S.ID,
            S.NAME,
            S.PASSWORD
            );

其实就是和java里面的if..else..一样。很简答下面一个案例

有俩个表EMP和EMP1结构一样,EMP1里面有两条数据

 

CREATE TABLE EMP (
ID NUMBER NOT NULL ,
NAME VARCHAR2(20 BYTE)  NULL ,
PASSWORD VARCHAR2(20 BYTE)  NULL ,
)
看下面语句

查询EMP 如果EMP.ID=EMP1.ID就update如果EMP.ID不等于EMP1.ID 就把EMP查出来的数据插入到EMP1里面。

注意: update的时候不要把主键也更新了!!!!!!!!!!!!,不然会报错,你懂的。

MERGE INTO EMP1 T
USING (
SELECT A.ID,A.NAME,A.PASSWORD FROM EMP A
      )S ON 
         (T.ID=S.ID)
WHEN MATCHED THEN
     UPDATE SET 
            T.NAME=S.NAME,
            T.PASSWORD=S.PASSWORD
WHEN NOT MATCHED THEN 
     INSERT (
            ID,
            NAME,
            PASSWORD
            )VALUES(
            S.ID,
            S.NAME,
            S.PASSWORD
            );


(2).Mysql的replace

        replace的作用和MERGE功能一样,而且更简单

 

    replace into EMP values(?,?,?,?,?)

       没有就插,有就更新

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值