oracle 일 경우 update , merge 둘 다 가능
UPDATE 문
-- TB_TEST1가 100건 , TB_TEST2 30건일 경우 30건만 UPDATE 수행 됩니다.
-- 하지만 WHERE 을 생략할 경우 100건 모두 UPDATE ( 당연한 얘기같지만 혹시나 해서요..)
UPDATE TB_TEST1 A
SET (COL3, COL4 ) = ( SELECT COL3, COL4
FROM TB_TEST2
WHERE COL1 = A.COL1 AND COL2 = A.COL2 )
WHERE EXISTS
(SELECT 1
FROM TB_TEST2
WHERE COL1 = A.COL1 AND COL2 = A.COL2);
MERGE 문
-- MERGE는 INSERT를 같이 할 수 있는 장점도 있습니다.
-- ON 조건에 만족하지 않으면 INSERT 할 때는 아래 주석을 푸시면 됩니다.
MERGE INTO TB_TEST1 A
USING TB_TEST2 B
ON ( A.COL1 = B.COL1 AND A.COL2 = B.COL2 )
WHERE MATCHED THEN
UPDATE SET A.COL3= B.COL3, A.COL4=B.COL4
-- WHERE NOT MATCHED THEN
-- INSERT (A.COL1, A.COL2, A.COL3, A.COL4)
-- VALUES (B.COL1, B.COL2, B.COL3, B.COL4)
-- ** oracle 10g까지만 update 할 때 /*+ bypass_ujvc */ 가능
'oracle' 카테고리의 다른 글
DBMS_XPLAN 튜닝 주로 사용하는 스크립트 (0) | 2020.04.01 |
---|---|
DBMS_XPLAN ORACLE PLAN 오라클 실제 플랜 (0) | 2019.12.17 |
job 프로시저 수행 (0) | 2017.09.27 |
테이블생성 프로시저 (0) | 2017.09.27 |