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 |