쿼리 질문드립니다. 0 1 1,321

by 가나다아아 [SQL Query] update [2017.11.10 15:27:16]


UPDATE TB_A A
    SET A.TARGET =  (
                WITH TB_WITH1 AS
                    (
                        SELECT KEY1, KEY2
                          FROM KEYS
                         WHERE BKEY = 'A'
                    )
                    SELECT KEY2
                      FROM TB_WITH1
                     WHERE A.KEY1= TB_WITH1.KEY1
                )
  WHERE A.MAINKEY = 'A'

A테이블에 TARGET이라는 컬럼을 UPDATE하고싶은데 KEYS테이블에 KEY1과 KEY2를 불러와서 A테이블의 KEY1과 TB_WITH1(KEYS)의 KEY1와 조건이 맞으면 해당 로우들(KEYS)의 KEY2컬럼값을 A테이블에 TARGET으로 업데이트 치는 쿼리문인데 여기서 'A'자리에 여러행이 들어간다면 EX)  = 'A' > IN ('A','B','C')로 된다면 쿼리문이 어떤식으로 짜여야할지 도무지 감이안옵니다....

 

 

by 마농 [2017.11.10 17:02:41]

WITH 문은 불필요해 보입니다. 구문만 복잡하네요.
메인의 조건(a.mainkey = 'A') 와 서브의 조건(bkey = 'A') 의 'A' 가 동일한 값이라면?
서브에서의 'A' 는 a.mainkey 로 대체하면 될 듯 하네요.

UPDATE tb_a a
   SET a.target = (SELECT b.key2
                     FROM keys b
                    WHERE b.bkey = a.mainkey
                      AND b.key1 = a.key1
                   )
 WHERE a.mainkey IN ('A','B','C')
;

 

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