갈루아의 반서재

728x90

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

 

[일반적인 업데이트의 경우]

UPDATE table

SET A = 'F'

WHERE B = 'T'

 

[다중행 업데이트의 경우]

UPDATE  /*+ bypass_ujvc */

 ( 조인된 select 쿼리가 위치하는 곳 )

SET A = A'

 

 

 

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

 

[예제]

 

UPDATE  /*+ bypass_ujvc */

  (SELECT a.end_dt end1, REPLACE(b.end_date, '-', '')  end2
   FROM table1 a, (
    SELECT id, Max(end_date) end_date
    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

728x90