这是我的代码片段.我不知道为什么insert语句(第3个片段)不起作用?
/* 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;
Run Code Online (Sandbox Code Playgroud)
通常,当您使用SELECT查询的结果作为INSERT查询的值时,将删除VALUES关键字.在MySQL中也是如此:
INSERT INTO t1
SELECT * FROM t1;
Run Code Online (Sandbox Code Playgroud)
但是,上面给出的版本是脆弱的,因为它在很大程度上依赖于源表和目标表中列的数量,顺序和类型是相同的(可能在大多数实际情况下,您不会插入从同一个表中获取的值).
我建议在使用INSERT..SELECT作为最佳实践时明确指定列:
INSERT INTO t1(col1, col2, col3)
SELECT colA, colB, colC FROM t2
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
62 次 |
| 最近记录: |