조건 포멧은 동일하나 값이 다른 경우 한번에 Update가 가능할까요 0 4 769

by 고수로. [Oracle 기초] [2019.03.13 09:21:12]


안녕하세요.

기술적으로 아래와 같은 경우가 가능한지 문의 드립니다.

예로 TEST 라는 테이블의 구조는 아래와 같습니다.

TABLE : TEST

컬럼 COL1 (KEY) 컬럼 COL2 (KEY) 컬럼 COL3 컬럼 COL4
AB001 A TEST1 JP
AB001 B TEST2 KR
AB001 C TEST3 US

 

위 구조의 정보는 COL1, COL2가 Key로 설정되어있습니다.

제가 하고자 하는건 아래와 같이 COL1에 해당하는 정보를 조회하여

SELECT * FROM TEST WHERE COL1 = 'AB001';

두번째 Key 정보인 COL2에 맞는 타겟 대상을 한 쿼리로 UPDATE가 가능할까요..

혹시 가능하지 않을까 싶은마음에...문의 드립니다.

(요지는 COL1 정보에 해당하는 모든 정보를 한 쿼리로 UPDATE를 하고 싶습니다. 조건은

정확한 COL2에 해당하는 대상들 모두를...)

가능하다면 적용은 mybatis에 할 예정이구요..ㅜ.ㅜ

조언을 부탁 드립니다.

 

 

 

by 마농 [2019.03.13 10:13:32]

값을 어떻게 변경할건가요?
변경후 결과를 보여주세요.


by 고수로. [2019.03.13 10:18:09]

COL3, COL4는 웹 화면에서 전달 받은 Parameter 값으로 받아서 처리를 하고 싶습니다.

샘플 테이블 구조의 행수도 3개지만 화면도 3개 고정이라 예시를 저렇게 하였습니다.


by 마농 [2019.03.13 10:24:17]
-- 1. 굳이 한방쿼리를 고집할 이유가 없어 보입니다.
UPDATE t SET col3 = 'test1', col4 = 'jp' WHERE col1 = 'AB001' AND col2 = 'A';
UPDATE t SET col3 = 'test2', col4 = 'kr' WHERE col1 = 'AB001' AND col2 = 'B';
UPDATE t SET col3 = 'test3', col4 = 'us' WHERE col1 = 'AB001' AND col2 = 'C';
-- 2. 굳이 한방쿼리를 원한다면?
UPDATE t
   SET col3 = DECODE(col2, 'A', 'test1', 'B', 'test2', 'C', 'test3')
     , col4 = DECODE(col2, 'A', 'jp'   , 'B', 'kr'   , 'C', 'us'   )
 WHERE col1 = 'AB001'
;

 


by 고수로. [2019.03.13 10:27:06]

감사합니다...다시 고민해보겠습니다.(_ _)

댓글등록
SQL문을 포맷에 맞게(깔끔하게) 등록하려면 code() 버튼을 클릭하여 작성 하시면 됩니다.
로그인 사용자만 댓글을 작성 할 수 있습니다. 로그인, 회원가입