2013-06-19 68 views
1

我有两个表,如何将数据从一张表插入到另一张表中?

tblA(id, num, col1, col2, col3), 
tblB(col1, col2, col3) 

COL1,COL2和COL3两个表中相同。现在我有以下SQL:

declare @num...(same type as num) 

insert into tblA 
select @num, * from tblB 

ID在TBLA是一个恒等式列。

但我得到以下错误, 列名或提供的值数量与表定义不匹配。

任何人都可以帮助我解决它吗?

+0

这应该工作。它预计4列,这是你提供的。你是积极的'ID'实际上是一个'IDENTITY'列?演示''CREATE TABLE TBLA(ID INT IDENTITY,NUM INT,COL1 INT,COL2 INT,COL3 INT); CREATE TABLE TBLB(COL1 INT,COL2 INT,COL3 INT); INSERT INTO TBLA SELECT 1,* FROM tblB'' –

+0

请为所涉及的两个表提供“CREATE TABLE”。还有桌子上的任何触发器? –

+0

是的。它是。这里的定义是,[ID] [数字](18,0)IDENTITY(1,1)NOT FOR REPLICATION NOT NULL – GLP

回答

2

只是INSERT使用命名列,并跳过标识列 - 它会自动填写:

INSERT INTO tblA (num, col1, col2, col3) SELECT @Num, col1, col2, col3 FROM tblB 
+0

Yeh。有用。谢谢。 – GLP

+0

@GLP - 在这种情况下,您对表格模式的描述必须错误。 “B”有没有提到的其他专栏? –

0

我认为错误消息是相当explicative:在SELECT和INSERT必须有相同数量的列。

你的情况

declare @num...(same type as num) 

insert into tblA(num,col1, col2, col3) 
select @num,col1, col2, col3 from tblB 

如果tblA关键是不能自动生成的,你必须考虑它在INSERT

更多信息here

3

能不能请你提供列名称以及

declare @num...(same type as num) 

insert into tblA(num, col1, col2, col3) 
select @num, * from tblB 

请不要担心身份列,因为它会自动填充。

0

它只是根据你的列名,他们应该是同一类型的:

insert into tblA(col1,col2,col3) 
select col1,col2,col3 
from tblB 
相关问题