테이블에 데이터가 이미 있으면 업데이트를 실행하고, 없을 경우 값을 넣어줘야 하는 경우
MERGE INTO 테이블명 별칭
USING 대상테이블 별칭
ON JOIN할조건
WHEN MATCHED THEN
UPDATE/DELETE SET ....WHEN
WHEN NOT MATCHED THEN
INSERT ......
예제1 서로 다른 테이블 비교 후 MERGE INTO -1
MERGE INTO SUPER_SCORE S
USING TOY_SCORE T
ON (S.COURSE_ID = T.COURSE_ID AND S.STUDENT_ID = T.STUDENT_ID)
WHEN MATCHED THEN
UPDATE SET S.SCORE = T.SCORE
WHEN NOT MATCHED THEN
INSERT (S.COURSE_ID, S.STUDENT_ID, S.SCORE)
VALUES (T.COURSE_ID, T.STUDENT_ID, T.SCORE);
예제2) 서로 다른 테이블 비교 후 MERGE INTO -2
MERGE INTO STUDENT st
USING (SELECT score, dev, age
FROM data
WHERE no = '0010') t
ON (st.dev = t.dev)
WHEN MATCHED THEN
UPDATE SET st.no = '0701' , st.subject = 'java'
WHEN NOT MATCHED THEN
INSERT (st.no, st.subject, st.tag)
VALUES (#{no}, #{subject}, #{tag})
예제3) 같은 테이블 비교 후 MERGE INTO
MERGE INTO student st
USING DUAL ON (dev = #{dev} AND subject = #{subject})
WHEN MATCHED THEN
UPDATE SET no = #{no} , subject = #{subject}
WHEN NOT MATCHED THEN
INSERT (st.no, st.subject, st.tag)
VALUES (#{no}, #{subject}, #{tag})
'업무' 카테고리의 다른 글
[ORACLE 함수] SYSDATE (1) | 2024.01.18 |
---|---|
[ORACLE 함수] DECODE / CASE (0) | 2024.01.18 |
[jQuery] wrapper (0) | 2024.01.16 |
[ORACLE] ORACLE 데이터 타입 (4) | 2024.01.15 |
[ORACLE] PL/SQL (5) | 2024.01.15 |