Oracle
[Oracle] MERGE INTO
라이언납시오
2020. 8. 4. 15:57
728x90
반응형
1. MERGE INTO 사용 이유
- 한번에 INSERT, UPDATE를 처리하고 싶을 때 사용
즉,
이미 존재하는 경우 : UPDATE
존재하지 않는 경우: INSERT
2. 예시
[Table 2개를 비교할 때]
MERGE INTO EMPLOYEE E
USING(
SELECT
ID
,USERNAME
,PNUM
,ADDRESS
,DEPTNO
FROM NEW_EMPLOYEE
WHERE HIREDATE>=TO_DATE('20200801','YYYYMMDD')
AND HIREDATE<=SYSDATE
) NE
ON(E.ID = NE.ID)
WHEN MATCHED THEN //이미 존재하는 경우 UPDATE 수행
UPDATE
SET
E.USERNAME = NE.USERNAME
,E.PNUM = NE.PNUM
,E.DEPTNO = NE.DEPTNO
WHEN NOT MATCHED THEN //존재하지 않는 경우 INSERT 수행
INSERT (
ID
,USERNAME
,PNUM
,ADDRESS
,DEPTNO
)
VALUES(
NE.ID
,NE.PNUM
,NE.ADDRESS
,NE.DEPTNO
)
[직접 값을 입력할 때]
MERGE INTO EMPLOYEE E
USING DUAL
ON(E.ID = '20200804')
WHEN MATCHED THEN //이미 존재하는 경우 UPDATE 수행
UPDATE
SET
E.USERNAME = '홍길동'
,E.PNUM = '01011112222'
,E.DEPTNO = '23'
WHEN NOT MATCHED THEN //존재하지 않는 경우 INSERT 수행
INSERT (
ID
,USERNAME
,PNUM
,ADDRESS
,DEPTNO
)
VALUES(
'20200804'
,'홍길동'
,'01011112222'
,23'
)
728x90
반응형