Database/Oracle

[Oracle]SELECT 결과 UPDATE

  • -
반응형


데이터를 수정하다보면 SELECT한 결과를 기반으로 UPDATE를 해야할 때가 종종 있다.

오늘은 SELECT후에 조건을 따져서 UPDATE문을 만드는 방법을 올려본다.


EMP_ID(사번)는 PK이며, TESTDB라는 테이블에 GENDER라는 속성이 추가 된 상황이라고 가정한다.

EMP_ID의 앞자리는 성별을 구분하는 번호로서 1은 남자, 2는 여자를 의미한다.

자 이제 쿼리를 보자.


1
2
3
4
5
6
7
8
9
10
11
12
13
14
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개) 구분을 해줘야 한다.





기본적인 쿼리문이지만 응용을 잘하면 효과적으로 사용할 수 있다.


+ 피드백은 언제나 환영입니다 :)

반응형
Contents

포스팅 주소를 복사했습니다

이 글이 도움이 되었다면 공감 부탁드립니다.