Database/SQL

[oracle] Merge문

yujin.me 2019. 7. 7. 21:47

insert, update를 한번에 할 수 있는 MERGE문

 MERGE INTO table_name alias
 USING (table | view | subquery)
 ON (join condition)
 WHEN MATCHED THEN
   	UPDATE SET col1 = val1[, ...]
 WHEN NOT MATCHED THEN
   	INSERT (column lists) VALUES (values);

테이블 2개를 join해서 update할 때 서브쿼리로 썼더니 계속 오류가 나서 해결방법을 찾음!

 MERGE INTO table_name A
 USING (SELECT B.user_id, B.user_name, B.user_no FROM ori_table_name B WHERE B.user_old = '24')
 ON (A.user_no = B.user_no AND A.user_id = B.user_id)
--조건이 일치할 경우
 WHEN MATCHED THEN UPDATE SET A.user_name = B.user_name
--조건이 일치하지 않을 경우
 WHEN NOT MATCHED THEN	INSERT (user_id, user_name, user_no) VALUES (B.user_id, B.user_name, B.user_no);
반응형