관리 메뉴

엉망진창

update join 예제 본문

Study_DB/DB_MSSQL

update join 예제

엉망진창 2007. 10. 5. 11:57

update 예제
--게시물(BOARD)의 아이디(strLoginID)를 게시물의 이메일(B.strEmail)과
--회원 이메일(M.strEmail)이 일치하는 회원의 아이디(M.strLoginID)로 교체

UPDATE BOARD 
       SET strLoginID = M.strLoginID  
  FROM BOARD B
     , MEMBER_LIST M  
 WHERE B.strEmail = M.strEmail;   

update 예제 2
MYTABLE08 테이블에서
나이가 40살 이상이고 주소가 제주도인 고객에게
봉급을 5000원 늘려주자

--대상자확인

SELECT * 
  FROM MYTABLE08 
 WHERE AGE >=40 
       AND ADDR1='제주도';  


--대상자봉급확인
SELECT * 
  FROM MYTABLE09 
 WHERE USERID IN 
       (SELECT USERID 
         FROM MYTABLE08 
        WHERE AGE >=40 
              AND ADDR1='제주도' 
       );   

--봉급올리자
UPDATE MYTABLE09 
       SET PAY=(PAY+5000) 
 WHERE USERID IN 
       (SELECT USERID 
         FROM MYTABLE08 
        WHERE AGE >=40 
              AND ADDR1='제주도' 
       );  

--JOIN문으로 변경
--B.* : B에 대한 정보만 보여주라는 의미임

SELECT B.* 
  FROM MYTABLE08 A
     , MYTABLE09 B 
 WHERE A.USERID = B.USERID 
       AND AGE >=40 
       AND ADDR1='제주도';  

--UPDATE

UPDATE MYTABLE09 
       SET PAY=(PAY+5000) 
  FROM MYTABLE08 A
     , MYTABLE09 B--WHERE문을 쓰기위해 삽입 
 WHERE A.USERID = B.USERID 
       AND AGE >=40 
       AND ADDR1='제주도';  

--DELETE

DELETE MYTABLE09 
  FROM MYTABLE08 A
     , MYTABLE09 B--WHERE문을 쓰기위해 삽입 
 WHERE A.USERID = B.USERID 
       AND AGE >=40 
       AND ADDR1='제주도';   

update 예제 3
방식1)

UPDATE 
       (SELECT a.a a1
            , a.b a2
            , a.c a3
            , b.a b1
            , b.b b2
            , b.c b3 
         FROM target a
            , dest b 
        WHERE a.x = b.x 
              AND a.y = b.y
       ) 
       SET a1 = b1
     , a2 = b2
     , a3 = b3;   

방식2)

UPDATE target a 
       SET a.a = 
       (SELECT a 
         FROM dest 
        WHERE x = a.x 
              AND y = a.y
       ) ;