반응형
반응형
반응형

13.2.4.1. INSERT ... SELECT

 

INSERT [LOW_PRIORITY | HIGH_PRIORITY] [IGNORE]
    [INTO] tbl_name [(col_name,...)]
    SELECT ...
    [ ON DUPLICATE KEY UPDATE col_name=expr, ... ]

 

INSERT ... SELECT 문에서 하나 혹은 그 이상의 테이블로 부터 많은 레코드들을 빠르게 삽입 할 수 있다.

 

INSERT INTO tbl_temp2 (fld_id)
  SELECT tbl_temp1.fld_order_id
  FROM tbl_temp1 WHERE tbl_temp1.fld_order_id > 100;

 

다음 조건들은 INSERT ... SELECT 문들에서 속한 것들이다.

 

중복 키 위반을 일으키는 레코드들을 무시 하기 위해 IGNORE를 사용한다.

 

DELAYED는 INSERT ... SELECT 로 무시 된다..

 

INSERT 문의 목표 테이블은 질의의 SELECT 문의 FROM 절에 나타날 수 있다. (예전 MySQL에서는 발생 하지 않았다)

 

AUTO_INCREMENT컬럼들이 변함 없이 작동한다.

 

바이너리 로그가 원본 테이블의 재 생성을 위해 사용되도록하려면  MySQL은 INSERT ... SELECT 문을 위한 현재 삽입들을 가능하지 않게 한다.

 

현재는 , 하부 질의 에서 같은 테이블로 부터 선택이나 삽입을 할수 없다.

 

ON DUPLICATE KEY UPDATE의 값 부분에서 SELECT 부분에서 GROUD BY문을사용 하지 않는 이상  여러분은 다른 테이블에서 컬럼들을 참조 할수 있다. 하나의 side effect는 여러분이 값 부분에서 유일 하지 않은 컬럼 이름들을 손질 해야 한다는 것이다.

반응형

'Database > Mysql' 카테고리의 다른 글

트리거 간단하게 구현한것.  (0) 2009.02.11
Joing 방법 종류 정리  (0) 2009.02.11
간단한 join  (0) 2009.02.11
sql 기본 query insert  (0) 2009.02.11
어제, 오늘 날짜 구하기  (0) 2009.02.11

+ Recent posts