조인해서 UPDATE 하기(MSSQL,오라클)
*MSSQL전용(WHERE조건을 사용할 수 있다)
UPDATE A --별칭
SET
A.CHARGE_RATE = B.CHARGE_RATE2
,A.FEE_AMT = B.FEE_AMT2
,A.NOTE = B.NOTE2
FROM 테이블 A
INNER JOIN 테이블 B
ON A.IDX = B.IDX2
WHERE A.IDX > 100
*오라클전용(/*+BYPASS_UJVC */ 힌트 코드를 사용한다)
UPDATE /*+BYPASS_UJVC */
(
SELECT
A.XA,
B.XB
FROM 테이블 A
INNER JOIN 테이블 B
ON A.KEY = B.KEY
) T
SET XA = XB;
오라클 예)
UPDATE /*+BYPASS_UJVC */
(
SELECT
A.RESISTRATION_NO AS SRC,
B.RESISTRATION_NO AS TARGET
FROM T_DORM_ENTER_SUBMIT A
INNER JOIN A_20120313 B
ON A.STNO = B.STNO
WHERE A.YEAR_TERM = '2012' AND A.TERM = '11' AND A.REG_STATUS = '1'
) T
SET TARGET = SRC;
*MSSQL,오라클공용(서브쿼리를 사용한다.-권장하지 않는다)
UPDATE 테이블 A
SET A.RESISTRATION_NO = ( SELECT B.RESISTRATION_NO
FROM 테이블 B
WHERE B.STNO = A.STNO AND B.YEAR_TERM = '2010' AND B.TERM = '22'
)
WHERE
A.DISTRIB_STATUS = '사용중'