쿼리문 질문 입니다. 0 2 1,331

by 손님 [SQL Query] 쿼리 [2012.04.24 21:10:04]


오라클 9i 사용 하구요,,

테이블은 아래 두개가 있습니다.

TBL1 테이블에 A_COLUMN , B_COLUMN,  C_COLUMN  이라고 있습니다. (PK :  A_COLUMN , B_COLUMN )
TBL2 테이블에 A_COLUMN , B_COLUMN ,  C_COLUMN  이라고 있습니다.  (PK :  A_COLUMN , B_COLUMN ) 

TBL1 테이블에  C_COLUMN   컬럼에
TBL2 테이블의  C_COLUMN   컬럼 값을 업데이트 치려 합니다.

즉, UPDATE SELECT 문을 사용하려구요...

근데, 오라클에서는 다중의 SELECT 후에 UPDATE 가 안되는것 같더라구요..

쿼리문 어케 짜야 할까요?

답변 좀 부탁 드립니다 (__)

by 마농 [2012.04.25 08:19:48]
-- 1. SubQuery
UPDATE t1
   SET c = (SELECT c FROM t2 WHERE a = t1.a AND b = t1.b)
 WHERE EXISTS (SELECT 1 FROM t2 WHERE a = t1.a AND b = t1.b)
-- WHERE c IN (SELECT c FROM t2)
;
-- 2. Updatable Join View
UPDATE 
(
SELECT t1.c old_c
     , t2.c new_c
  FROM t2
 WHERE t1.a = t2.a
   AND t1.b = t2.b
)
SET old_c = new_c
;
-- 3. Merge
MERGE t1
USING t2
   ON (t1.a = t2.a AND t1.b = t2.b)
 WHEN MATCHED THEN
      UPDATE SET c = t2.c
;

by 손님 [2012.04.25 12:42:20]
마농님 답변 감사드립니다 (__)
댓글등록
SQL문을 포맷에 맞게(깔끔하게) 등록하려면 code() 버튼을 클릭하여 작성 하시면 됩니다.
로그인 사용자만 댓글을 작성 할 수 있습니다. 로그인, 회원가입