2011-09-16 4 views
2

내 코드 조각입니다. 삽입 문 (제 3 조각)이 작동하지 않는 이유는 무엇입니까?왜이 insert 문은 mysql에서 작동하지 않습니까?

/* work nicely*/ 
    create table t1 
    (
     a int, 
     b varchar(255) 
    ); 

/* work nicely*/ 
insert into t1 values (1,"one"),(2,"two"); 

/* Why does this one not work??? */ 
insert into t1 
values select * from t1; 

답변

5

일반적으로 SELECT 쿼리의 결과를 INSERT 쿼리의 값으로 사용하면 VALUES 키워드를 삭제합니다. This is true in MySQL as well :

INSERT INTO t1 
SELECT * FROM t1; 
는 번호 순서에 크게 의존하고, (같은되는 소스의 열 및 목표 테이블의 유형은 아마도 대부분의 실제 경우에 당신이 원하기 때문에 위의 버전은, 그러나, 취약

' t 같은 표에서 가져온 값을 삽입하십시오.

가장 좋은 방법은 INSERT..SELECT을 사용할 때 명시 적으로 열을 지정하는 것이 좋습니다

INSERT INTO t1(col1, col2, col3) 
SELECT colA, colB, colC FROM t2 
관련 문제