UPDATE시 CASE WHEN 사용하기

nn·2022년 1월 26일
0

다른 컬럼을 참조하여 테이블을 업데이트 해야 하는 경우가 생겼다.

UPDATE emp
   SET sal = 2000
 WHERE empno IN (SELECT a.empno
                   FROM emp a
                      , dept b
                  WHERE a.job = 'MANAGER'
                    and a.deptno = b.deptno)

위처럼 서브쿼리를 사용하면
job이 MANAGER인 사람들의 sal을 2000으로 지정할 수 있다

다만 MANAGER가 아닌 사람들의 sal을 지정하려면 어떻게 해야할까?

일일히 조건을 바꿔가면서 update쿼리를 한줄씩 수행해도되지만 case when을 사용하면 하나의 쿼리만으로도 조건에 맞게 update가 가능하다.

UPDATE 테이블명 SET 컬럼명 = CASE
WHEN 컬럼명1 = 비교값1 THAN 반환값1
WHEN 컬럼명2 = 비교값2 THAN 반환값2
ELSE 반환값3
END;

위와 같이 업데이트문을 수행하면 한번의 쿼리로 여러 조건을 수정할 수 있다.

적용예제는 아래와 같다

UPDATE emp
   SET sal = case when job = 'MANAGER' than 2000
   when job = 'ANALYST than 3000
   else 0000
   end;

위와같이 하면 manager의 sal은 2000, analyst의 sal은 3000으로 업데이트 될 것이다.

profile
내가 될 거라고 했잖아

0개의 댓글