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

tblA 中的 id 是一个标识列。

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

谁能帮我解决它?

4

4 回答 4

3

您能否也尝试提供列名,

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

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

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

于 2013-06-19T15:31:22.643 回答
2

只需INSERT使用命名列,并跳过标识列 - 它将自动填充:

INSERT INTO tblA (num, col1, col2, col3) SELECT @Num, col1, col2, col3 FROM tblB
于 2013-06-19T15:27:48.050 回答
0

我认为错误消息非常明确:SELECT 和 INSERT 必须具有相同数量的列。

在你的情况下

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

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

如果 key ontblA不是自动生成的,你必须在 INSERT 中考虑它

更多信息在这里

于 2013-06-19T15:28:33.117 回答
0

它只是基于您的列名,它们应该是相同的类型:

insert into tblA(col1,col2,col3)
select col1,col2,col3
from tblB
于 2013-06-19T15:40:08.603 回答