참고 : http://intomysql.blogspot.kr/2011/01/join-update-multiple-table-update.html
         http://intomysql.blogspot.kr/2011/01/join-delete-multiple-table-delete.html


1. JOIN으로 여러 테이블 한번에 DELETE (DELETE와 FROM 절 사이에 삭제할 테이블 명시)

DELETE A, B, C
   FROM USER A
   LEFT JOIN USER_PHOTO B
               ON A.USER_ID = B.USER_ID
   LEFT JOIN USER_TOPIC C
              ON A.USER_ID = C.USER_ID
 WHERE A.USER_ID = 'test'

 
1-1. JOIN으로 여러 테이블 한번에 DELETE (FROM과 USING 절 사이에 삭제할 테이블 명시)
     - A, B 테이블만 삭제되고 C 테이블은 JOIN에만 참여

DELETE FROM A, B
  USING USER A INNER JOIN USER_PHOTO B INNER JOIN USER_TOPIC C
 WHERE A.USER_ID = B.USER_ID
     AND A.USER_ID = C.USER_ID
    AND A.USER_ID = 'test'





2. JOIN 으로 테이블 UPDATE
     - 두 테이블이 USER_ID로 JOIN 후 B테이블의 SOURCE_COL 값이 A테이블 TARGET_COL로 업데이트 된다.

UPDATE USER A, USER_PHOTO B
      SET A.TARGET_COL = B.SOURCE_COL
 WHERE A.USER_ID = B.USER_ID



 2-1. JOIN 으로 여러 테이블 한번에 UPDATE
    - 두 테이블이 USER_ID로 JOIN 후 B테이블의 SOURCE_COL 값이 A테이블 TARGET_COL로 업데이트 되고 A테이블의 SOURCE_COL 값이 B테이블 TARGET_COL로 업데이트 된다.

UPDATE USER A, USER_PHOTO B
      SET A.TARGET_COL = B.SOURCE_COL
          , B.TARGET_COL = A.SOURCE_COL
 WHERE A.USER_ID = B.USER_ID



 2-2. JOIN 으로 여러 테이블 한번에 UPDATE
   - 두 테이블이 USER_ID로 JOIN 후 B테이블의 SOURCE_COL 값이 A테이블 TARGET_COL로 업데이트 되고 A테이블의 SOURCE_COL 값이 B테이블 TARGET_COL로 업데이트 된다.

UPDATE USER A JOIN USER_PHOTO B
      ON A.USER_ID = B.USER_ID
      SET A.TARGET_COL = B.SOURCE_COL
          , B.TARGET_COL = A.SOURCE_COL
 WHERE A.USER_ID = 'TEST'



 

+ Recent posts