DBMS/오라클기타

다중update

choi121xx 2015. 6. 8. 22:48
2개 이상의 테이블을 조인하여 table1의 특정 컬럼을 table2 의 특정 컬럼의 값으로 업데이트는 아래와 같은 형식을 취한다.

[일반적인 업데이트의 경우]
UPDATE table
SET A = 'F'
WHERE B = 'T'

[다중행 업데이트의 경우]
UPDATE  /*+ bypass_ujvc */
( 조인된 select 쿼리가 위치하는 곳 )
SET A = A'

아래 예제는 table2 의 id 별로 enddate 컬럼의 max 값을 찾아 비어져있는 table1 의 enddt 컬럼에 업데이트하는 경우이다.

[예제]

UPDATE /*+ bypassujvc */

(SELECT a.end
dt end1, REPLACE(b.enddate, '-', '') end2
FROM table1 a, (
SELECT id, Max(end
date) enddate
FROM table2
GROUP BY id
) b
WHERE a.id = b.id
AND a.end
dt is null
AND b.end_date > '2014-03-22'
)

SET end1 = end2



TistoryM에서 작성됨