Join Update(조인 업데이트) 방법 (DBMS 별 구문 비교) 3 0 67,009

by 마농 [마농] join update update [2018.04.03 16:30:55]


문제 : 사원테이블(emp)의 부서번호(deptno)에 해당하는 부서명(dname)을 부서테이블(dept)에서 찾아
       사원테이블(emp)의 부서명(dname)을 갱신하시오.
 

-- 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
;
-- MSSQL - From 절 사용 조인 --
UPDATE e
   SET e.dname = d.dname
  FROM emp e
 INNER JOIN dept d
    ON d.deptno = e.deptno
;
-- MySQL - Update 절에서 바로 조인 --
-- SET sql_safe_updates = 0;
UPDATE emp e
 INNER JOIN dept d
    ON d.deptno = e.deptno
   SET e.dname = d.dname
;

 

댓글등록
SQL문을 포맷에 맞게(깔끔하게) 등록하려면 code() 버튼을 클릭하여 작성 하시면 됩니다.
로그인 사용자만 댓글을 작성 할 수 있습니다. 로그인, 회원가입