ABOUT ME

-

Today
-
Yesterday
-
Total
-
  • [SQL] MERGE - 병합
    Database/SQL (oracle, mysql) 2019. 5. 29. 17:24

    합병(병합) MERGE

    구조가 같은 두개의 테이블을 하나의 테이블로 합치는 기능이다.

    - 기존에 존재하는 행이 있다면 새로운 값으로 갱신되고 존재하지 않는 행이 있다면 새로운 행으로 추가해라.

    MERGE INTO 기준테이블명 별명

             USING 참조테이블명 별명

             ON ( 매칭 조건식 )

    WHEN MATCHED    <--매칭되는 행이 있다면

          THEN 업데이트문

    WHEN NOT MATCHED    <-- 매칭되는 행이 없다면

          THEN 추가문

     


    ex.

    MERGE INTO emp11   e1   -- 병합결과 반영할 테이블!!
           USING  emp12   e2  -- 병합에 영향을 미칠 데이터를 담는 참조 테이블!!
           ON (e1.empno = e2.empno)      -- 관련된 행(같은 행)인지를 판별
       WHEN MATCHED      -- 매칭되는 행이 있다면
          THEN -- 변경문
                update set
                     e1.job=e2.job,
                     e1.mgr=e2.mgr,
                     e1.sal=e2.sal,
                     e1.comm=e2.comm,
                     e1.deptno=e2.deptno
       WHEN NOT MATCHED  -- 매칭되는 행이 없다면 
          THEN --추가문
                 insert values (e2.empno, e2.ename, e2.job, e2.mgr,
                                e2.hiredate, e2.sal, e2.comm, e2.deptno);

    반응형

    댓글

Designed by Tistory.