DB 이야기

디비이야기 21. MERGE문

김푸른초푸른 2020. 3. 11. 00:39

1. MERGE INTO 

= 조건을 비교하여 IF NOT이면 INSERT / IF IS이면 UPDATE를 실행시킨다

문법 : MERGE INTO table_name alias            USING (table | view | subquery) alias                -- 하나의 테이블만 이용한다면 DUAL 활용                 ON (join condition)                                     -- WHERE절에 조건 쓰듯이            WHEN MATCHED THEN                                   -- on 이하의 조건에 해당하는 데이터가 있는 경우 (조건식)                     UPDATE SET col1 = val1[, ...]                -- UPDATE 실행            WHEN NOT MATCHED THEN                           -- on 이하의 조건에 해당하는 데이터가 없는 경우                     INSERT (column lists) VALUES (values);  -- INSERT 실행

 

EX)  MERGE INTO ex3_3 d
         USING (SELECT employee_id, salary, manager_id
                  FROM employees
                 WHERE manager_id = 146) b
            on (d.employee_id = b.employee_id)
     WHEN MATCHED THEN
          UPDATE SET d.bonus_amt = d.bonus_amt + b.salary * 0.01
          DELETE WHERE (B.employee_id = 161)
     WHEN NOT MATCHED THEN
          INSERT (d.employee_id, d.bonus_amt) VALUES (b.employee_id, b.salary *.001)
          WHERE (b.salary < 8000);

 

* USING ON에서 중복체크를 해준다