SYBASE(사이베이스) -> ORACLE 컨버젼 작업중 JOIN UPDATE 의 의미 질문 0 1 3,250

by 최성호 [2012.09.10 16:07:05]


고생고생 해가면서 SYBASE 에서 오라클 용으로 쿼리 변경중인 초보자 입니다.

아래 사베문장을 오라클로 옮기려고 하는데 사베에서의 JOIN 의미를 제대로 파악하고 변경한것인지 확인 부탁드립니다.
 
요점 : 아래 사이베이스 JOIN UPDATE 문의 의미가 대상테이블과 JOIN 된 테이블로 나온결과를
  대상테이블의 기준조건만 업데이트 하는 것인지
 아니면  대상테이블 전체를 업데이트 하는 것인지
  만약 기준조건만 업데이트한다면 아래 EXISTS 문으로 바꾸는것이 맞는 것인지
  알고 싶십니다. ( 11G 버젼 이후로는 BYPASS 힌트를 사용할수가 없기때문에 아래 쿼리로 작성하였습니다.)

--> 사이베이스
    UPDATE  대상테이블 A
--     SET  A.COL4 =  B.COL4
-- FROM  대상테이블A  A
--    , JOIN테이블B  B
--    , JOIN테이블C  C
--   WHERE A.COL1    =  B.COL1
--     AND A.COL2    = C.COL2   
--     AND A.COL3    = C.COL3
--     AND A.기준조건 = '기준값'
  

--> 오라클
   UPDATE  대상테이블A  D 
    SET  A.COL4   =  (
 SELECT B.COL4
FROM  대상테이블A  A
    ,  JOIN테이블B  B 
,  JOIN테이블C  C 
     WHERE A.COL1 = B.COL1
  AND A.COL2 = B.COL2    
 AND A.COL3    = C.COL3
  AND A.PK1   = D.PK1
  AND A.PK2   = D.PK2
  AND A.PK3   = D.PK3
  AND A.기준조건 = '기준값'
)
  WHERE D.기준조건 = '기준값'  -- P.S A.기준조건 = '기준값' 고 같은 조건
   AND EXISTS (
 SELECT 'X'
FROM 대상테이블A A
, JOIN테이블B B 
, JOIN테이블C C 
 WHERE A.COL1 = B.COL1
   AND A.COL2 = B.COL2 
   AND A.COL3 = C.COL3
   AND A.PK1 = D.PK1
   AND A.PK2 = D.PK2
   AND A.PK3 = D.PK3
   AND A.기준조건 = '기준값'
)

    ;

by 손님 [2012.09.20 17:46:29]

자문 자답

exists  를 통해서 해당 조인데이타들과 일치하는 데이타만 업데이트 해주는 경우가 맞네요.

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