생존기술_IT/DB [MS,My,Orcl]

[ORACLE] UPDATE with JOIN.. in Oracle ..

LeCafeCreme 2020. 11. 24. 17:10

.. 오라클을 거의 안 써봐서..;;

 

-- Oracle --

-- 1. SubQuery 를 이용한 Update

UPDATE emp e

   SET e.dname = (SELECT d.dname FROM dept d WHERE d.deptno = e.deptno)

 WHERE EXISTS (SELECT 0 FROM dept d WHERE d.deptno = e.deptno)

;

-- 2. Updatable Join View 이용

--    단, d.deptno 가 반드시 PK 이어야 함

--    10G 까지는 PK 아니더라도 힌트로 제어 가능(/*+ bypass_ujvc */)

UPDATE /*+ bypass_ujvc */

       (SELECT e.dname

             , d.dname AS dname_new

          FROM emp  e

             , dept d

         WHERE d.deptno = e.deptno

        )

   SET dname = dname_new

;

-- 3. Merge

MERGE INTO emp e

USING dept d

ON (d.deptno = e.deptno)

WHEN MATCHED THEN

UPDATE SET e.dname = d.dname

;

 

결국 머지가 가장 쉽더라..