[MySQL] INSERT SELECT를 이용한 데이터 복사

드디어 MySQL까지 손을 대는 건가? ㅋㅋ 근데 웹 프로그래밍을 하다 보면 MySQL은 할 수밖에 없는 것이다. 오늘은 같은 테이블 내에서 데이터를 복사해서 입력하는 것을 해보려고 한다. 쇼핑몰 같은 곳에서 상품을 복사 하면 상품정보뿐만 아니라 옵션 정보 같은 것도 복사가 되어야 하는데.. 그때마다 select로 쿼리 날리고 다시 insert 하는 것보다는 하나의 쿼리로 해보는 것이 좋지 않을까 싶어 방법을 연구해봤다. 방법은 역시 있더라는..

INSERT … SELECT 구문을 사용하면 되는데.. 사용법은 매뉴얼을 보시기 바랍니다. ^^;

<?php
$sql = " INSERT IGNORE INTO `tableA` ( item_name, item_no, item_price )
            SELECT item_name, '$item_no', item_price
              FROM `tableA`
              WHERE item_no = '1234'
              ORDER BY idx ";
mysql_query($sql);
?>

위 코드는 tableA의 데이터를 복사하는 것인데 item_no = 1234인 레코드를 item_no = 5678 인 레코드로 복사하는 것이다. $item_no = 5678인 셈이다. 그리고 idx는 AUTOINCREMENT 속성이 들어간 필드이다. 이런 식으로 쿼리를 작성해서 실행시키면 간단하게 데이터가 복사된다. IGNORE가 들어간 이유는 동일한 테이블이기 때문에 데이터가 중복된다고 에러를 내기 때문이다.

 

Leave a Reply

Your email address will not be published. Required fields are marked *

This site uses Akismet to reduce spam. Learn how your comment data is processed.