-
[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);반응형'Database > SQL (oracle, mysql)' 카테고리의 다른 글
[SQL] 무결성 제약조건 (0) 2019.05.30 [SQL] TCL - ROLLBACK, COMMIT, SAVEPOINT (0) 2019.05.30 [SQL] DML - INSERT, DELETE, UPDATE (데이터 조작어) (0) 2019.05.29 [SQL] DDL - CREATE, DROP, ALTER, RENAME, TRUNCATE (0) 2019.05.28 [SQL] SUB QUERY ( 서브 쿼리) (0) 2019.05.28