본문 바로가기

Database/SQL

[oracle] Merge문

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);
반응형

'Database > SQL' 카테고리의 다른 글

[oracle] PIVOT, UNPIVOT  (0) 2019.07.21
[oracle] EXISTS, NOT EXISTS  (0) 2019.07.21
[oracle] INSTR  (0) 2019.07.21
[oracle] NVL, NVL2, NULLIF  (0) 2019.07.07
[oracle]order by 써서 update 하기  (0) 2019.06.25