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(?,?,?,?,?)

       没有就插,有就更新

猜你喜欢

转载自blog.csdn.net/gzc_870301/article/details/81101935