插入SQL语句

时间:2009-07-08 15:41:11

标签: sql insert

我是SQL的新手,&我需要一个Insert语句的帮助。

我有两张桌子 - Current&旧。 Current表中包含新的和新的列。因此不在旧。我的一位用户从Current删除了一条记录,&我想将记录添加到Current from Old。

我尝试了一个简单的Insert语句,将数据从Old“拉”到Current,但是我收到以下错误 - 列名或提供的值数与表定义不匹配。

有没有办法让我创建唱片&忽略/绕过Current?

中的新字段

4 个答案:

答案 0 :(得分:3)

一般语法将如下所示

insert into table <columnlist here>
select <columnlist here>
from table

您可以指定所需的列,但这只有在列可以为空或在其上定义了默认值时才有效

答案 1 :(得分:1)

您需要指定列

INSERT INTO table1 (column1, column2, ...)
SELECT column3, column4, ...
FROM table2

答案 2 :(得分:1)

指定您要预先插入的所有列,或者向select子句添加占位符:

INSERT INTO Current (ID, Col1, Col2, Col3) SELECT * FROM Old WHERE ID=x

INSERT INTO Current SELECT *, 'col4value', 'col5value' FROM Old WHERE ID=x

当然,你也可以做到这两点。这可能是最好的方式:

INSERT INTO Current (ID, Col1, Col2, Col3, Col4, Col5) 
    SELECT *, 'col4value', 'col5value' FROM Old WHERE ID=x

答案 3 :(得分:0)

是的,你可以这样做:

INSERT INTO NewTable (OldColumn1, OldColumn2, NewColumn, OldColumn3)
SELECT OldColumn1, OldCoumn2, NULL /* Or some default value */, OldColumn3
FROM OldTable