기본 콘텐츠로 건너뛰기

181107 SELECT UPDATE



특정 KEY값이 동일한 테이블의 값을 일괄 UPDATE하기 위해
SELECT 결과로 UPDATE를 사용


예)
SELECT KEY1, COL1 FROM TB1 WHERE KEY1 IN('M111','M222','M333');
SELECT KEY1, COL1 FROM TB2 WHERE KEY1 IN('M111','M222','M333');
cs

UPDATE TB2 A
SET A.COL1 = (
              SELECT B.COL
              FROM TB1 B
              WHERE A.KEY1 = B.KEY1
             )
WHERE EXISTS (
              SELECT 1 
              FROM TB1 B 
              WHERE A.KEY1 = B.KEY1
             )
          AND A.KEY1 = 'M111';
cs
※ EXISTS를 사용하는 이유
 - 업데이트 대상이 없을 때 테이블을 전부 뒤지므로 쓸데없는 행위 방지

UPDATE 
      (
          SELECT A.KEY1, A.COL, B.COL COL_UP
            FROM TB1 A, TB2 B
         WHERE A.KEY1 = B.KEY1
       )
SET COL = COL_UP
WHERE KEY1 = 'M111'
cs