ORACLE中Merge into使用理解

今天突然看到新项目中有Merge into写法,查了下资料,把自己理解的记录下来:

SQL如下:

MERGE INTO   TABLE_A A
     USING   (    SELECT   '' || :id || '' ID FROM DUAL) B
        ON   (A.ID = B.ID)
WHEN MATCHED
THEN
   UPDATE SET
      A.TYPE = :TYPE, A.CYCLE = :cycle, A.UNIT = :unit, A.TIMES = :times
WHEN NOT MATCHED
THEN
   INSERT              (ID,
                        NAME,
                        TYPE,
                        TIMES,
                        STATUS)
       VALUES   (:id,
                 :NAME,
                 :TYPE,
                 :times,
                 DEFAULT)


MERGE INTO 要操作的表(A),USING关联表(B),ON两表之间的关系(A.ID = B.ID), 根据两个表的id来进行匹配;

WHEN MATCHED   --若匹配到记录
THEN     

UPDATE SET A.TYPE = :TYPE, A.TIMES = :times   --修改A表,数据为:A、B表匹配到的记录(A.ID = B.ID)

WHEN NOT MATCHED  -- 若未匹配到记录

THEN

--插入新的记录到A表中

   INSERT              (ID,
                        NAME,
                        TYPE,
                        TIMES,
                        STATUS)
       VALUES   (:id,
                 :NAME,
                 :TYPE,
                 :times,
                 DEFAULT)
大致理解为:SELECT * FROM TABLE_A A ,TABLE_B B WHERE A.ID = B.ID

判断查询是否有数据:有数据,修改查询出来的A表数据(若存在多条,应该会修改多条,未测试),没有数据则新插入一条记录到A表中


以上为个人理解,如理解有误,欢迎指出纠正

猜你喜欢

转载自blog.csdn.net/woweipingzui/article/details/47130337