고생고생 해가면서 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.기준조건 = '기준값'
)
;