조건에 맞는 update 쿼리문 0 1 333

by 퇴근하고싶다 [Oracle 기초] [2019.07.02 08:41:42]


테이블 두개를 이용하여 update를 일괄적으로 적용하고 싶습니다.

만약 update할 테이블이(staff)

table : staff

년도 학기 고유번호 이름 취미 특기
2019 2 1234567 홍길동 독서 자전거
2019 2 9876543 이순신 게임 컴퓨터
2019 2 7777999 김유신 농구 배구

아래 테이블에서(hobby) 년도,학기,고유번호에 따라 취미,특기칼럼만 update하고싶습니다.

table : hobby

년도 학기 고유번호 취미 특기
2019 2 1234567 등산 정리정돈
2019 2 9876543 영화감상 축구
2019 2 7777999 당구 탁구

감사합니다.

 

by 마농 [2019.07.02 09:38:11]
-- 1. 서브쿼리
UPDATE staff m
   SET (취미, 특기) = (SELECT 취미, 특기
                         FROM hobby s
                        WHERE s.년도 = m.년도
                          AND s.학기 = m.학기
                          AND s.고유번호 = m.고유번호
                       )
 WHERE EXISTS (SELECT 1
                 FROM hobby s
                WHERE s.년도 = m.년도
                  AND s.학기 = m.학기
                  AND s.고유번호 = m.고유번호
               )
;
-- 2. 조인 뷰
UPDATE (SELECT m.취미
             , m.특기
             , s.취미 AS 새취미
             , s.특기 AS 새특기
          FROM staff m
             , hobby s
         WHERE s.년도 = m.년도
           AND s.학기 = m.학기
           AND s.고유번호 = m.고유번호
        )
   SET 취미 = 새취미
     , 특기 = 새특기
;
-- 3. 머지
MERGE INTO staff m
USING hobby s
ON 
(   s.년도 = m.년도
AND s.학기 = m.학기
AND s.고유번호 = m.고유번호
)
WHEN MATCHED THEN
UPDATE
   SET 취미 = s.취미
     , 특기 = s.특기
;
-- http://gurubee.net/article/79308

 

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