데이터를 수정하다보면 SELECT한 결과를 기반으로 UPDATE를 해야할 때가 종종 있다.
오늘은 SELECT후에 조건을 따져서 UPDATE문을 만드는 방법을 올려본다.
EMP_ID(사번)는 PK이며, TESTDB라는 테이블에 GENDER라는 속성이 추가 된 상황이라고 가정한다.
EMP_ID의 앞자리는 성별을 구분하는 번호로서 1은 남자, 2는 여자를 의미한다.
자 이제 쿼리를 보자.
| WITH TESTDB AS( SELECT '102233' EMP_ID, '이승현' EMP_NM, '개발팀' DEPART_NM, '' GENDER FROM DUAL UNION ALL SELECT '200011' EMP_ID, '김장미' EMP_NM, '운영팀' DEPART_NM, '' GENDER FROM DUAL UNION ALL SELECT '104465' EMP_ID, '박대원' EMP_NM, '기획팀' DEPART_NM, '' GENDER FROM DUAL UNION ALL SELECT '206601' EMP_ID, '최지원' EMP_NM, '마케팅팀' DEPART_NM, '' GENDER FROM DUAL ) SELECT T.EMP_ID , T.EMP_NM , T.DEPART_NM , CASE WHEN SUBSTR(T.EMP_ID,1,1)='1' THEN 'UPDATE TESTDB SET GENDER=''M'' WHERE EMP_ID='''||T.EMP_ID||'''' ELSE 'UPDATE TESTDB SET GENDER=''W'' WHERE EMP_ID='''||T.EMP_ID||'''' END SQLU1 FROM TESTDB T ; | cs |
CASE문을 이용해서 UPDATE문을 만들었다.
이 때 굵은 글씨를 확인해야 한다. 문자열을 입력해줄 때는 '' ''(작은 따옴표가 2개)이어야 하고 숫자를 입력할 때는
GENDER=1과 같이 작은 따옴표를 생략해주면 된다.
테이블에서 값을 가져오는 경우는 '''|| ||'''(작은 따옴표 3개) 구분을 해줘야 한다.
기본적인 쿼리문이지만 응용을 잘하면 효과적으로 사용할 수 있다.
+ 피드백은 언제나 환영입니다 :)