서브쿼리 조인 UPDATE 문의 드립니다. 0 3 3,105

by 페이즈 [SQL Query] [2009.10.15 11:06:22]


 

UPDATE
(
    SELECT A.DATA1, B.DATA3
      FROM DB1 A,
           (SELECT C1 AS DATA1, C2 AS DATA2, C3 AS DATA3
              FROM DB2
             WHERE C1='1' AND C2 = '2'
           
            UNION ALL
           
            SELECT D1 AS DATA1, D2 AS DATA2, D3 AS DATA3
              FROM DB3
             WHERE D1='1' AND D2 = '3'
           ) B
     WHERE A.KEY1 = B.DATA1 AND A.KEY2 = B.DATA2
)
SET A.DATA1 = B.DATA3

 

 

MS SQL만 하다가 오라클 할려다 보니... 상당히 헤메고 있습니다. ㅡㅡ;;;

 

위의 쿼리와 같이 A 테이블의 DATA1 값에 서브쿼리로 구성된 B 의 DATA3 값으로 UPDATE를 치려고 합니다.

위 쿼리대로 실행하면 B 라는 서브쿼리 묶음이 ’열명이 부족합니다’ 라고 나오네요.

어떻게 구성을 변경해줘야 할까요???

선배님들의 조언 부탁 드립니다. (_ _)

 

by 손님 [2009.10.15 11:33:02]
오라클 update문이 이런형식도 가능한거였나요 첨보는 형식이네요 -.-;;

by 페이즈 [2009.10.15 13:31:55]
해결했습니다.
set 부분에서
SET A.DATA1 = B.DATA3


SET DATA1 = DATA3

으로 변경하니 바로 처리되네요.
alias 가 안되는 이유가 무엇일까요??? ㅡㅡ;;;

by 김강환 [2009.10.15 13:51:51]
update 문 뒤에 오는, ()안 것은 새로운 집합입니다. A와B의 조인결과가 합쳐진 새로운 하나의 집합입니다. A라는 앨리아스는 DB1의 별칭이고 B라는 앨리아스는 DB2와 DB3의 UNION ALL에 의해 탄생된 집합에 대한 앨리아스구요.
댓글등록
SQL문을 포맷에 맞게(깔끔하게) 등록하려면 code() 버튼을 클릭하여 작성 하시면 됩니다.
로그인 사용자만 댓글을 작성 할 수 있습니다. 로그인, 회원가입