반응형
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 |