2011-09-16 182 views
2

这是我的代码片段。 我不知道为什么插入语句(第三段)不起作用?为什么这个插入语句不能在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; 

上面给出的版本是脆弱的,虽然,因为它在很大程度上依赖于数量,顺序,并在源是相同的(列目标表的类型大概是最真实的情况下,你赢了”插入从取得的值,表)。

我建议指定列明确使用INSERT..SELECT作为最佳实践时:

INSERT INTO t1(col1, col2, col3) 
SELECT colA, colB, colC FROM t2 
相关问题