Join문을 이용해서 update시..  헷깔리는 경우가 많다..


테이블1  TAB1 ( KEY, COL1)

테이블2  TAB1 ( KEY, COL2)


테이블1의 컬럼 COL1에  테이블1과 테이블2의 KEY값이 동일한 경우 COL2를 업데이트 하는 경우.


JOIN을 이용하지 않는 경우..  

UPDATE TAB1 A 

SET     COL1 = ( SELECT COL2 

                         FROM TAB2

                         WHERE   KEY = A.KEY );


JOIN을 이용하는 경우에는

/*+ BYPASS_UJVC  */  라는 힌트를 이용해서 UPDATE한다.

UPDATE  /*+ BYPASS_UJVC  */

(

    SELECT  A.COL1   COL1

                , B.COL2   COL2

    FROM   TAB1 A

               , TAB2 B

    WHERE   A.KEY = B.KEY

)

SET COL1 = COL2

INNER JOIN 한 후에, 수정할 필드 COL1과 대상 필드 COL2를 조회해서 UPDATE한다.


OUTER JOIN한 후에, UPDATE를 해야 하는 경우에는 

    WHERE   A.KEY = B.KEY(+)

 OUTER JOIN을 해서 UPDATE가 가능하다.



SQL Server에서는..  join update가 좀더 쉽다..  아마도.. ^^

UPDATE  TAB1

SET        COL1 = B.COL2

FROM     TAB1 A INNER JOIN TAB2 B ON A.KEY = B.KEY




'sql' 카테고리의 다른 글

group by에서 문자열 합치기...  (3) 2014.03.31
오라클 년별, 월별 주차 계산...  (0) 2014.03.21
SQL문에서 like 검색.. escape  (0) 2014.03.19
매월 첫번주 월요일 구하기...  (0) 2014.03.17
오라클 TRUNC 함수..  (0) 2014.03.17
Posted by 무세1
,