2013-06-19 67 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 
相關問題