我是SQL的新手,&我需要一个Insert语句的帮助。
我有两张桌子 - Current&旧。 Current表中包含新的和新的列。因此不在旧。我的一位用户从Current删除了一条记录,&我想将记录添加到Current from Old。
我尝试了一个简单的Insert语句,将数据从Old“拉”到Current,但是我收到以下错误 - 列名或提供的值数与表定义不匹配。
有没有办法让我创建唱片&忽略/绕过Current?
中的新字段答案 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