2012-12-07 32 views
2

我有一個包含59列的表Table1Table2Table1的一個副本,最後一列爲COLUMN 60。因此table2有60列。SQL:使用SELECT將INSERT數據插入帶有額外列的表中

我試圖複製從table1值來table2table2額外列的值設置爲「價值」

像這樣的事情

INSERT INTO Table2 
    SELECT * FROM Table1, 'value' AS 'COLUMN 60' 

我怎樣才能做到這一點?使用上面的代碼給我一個錯誤:

An explicit value for the identity column in table 'TableLocation' can only be specified when a column list is used and IDENTITY_INSERT is ON.

我不想指定列名稱,因爲它們太多。

+1

如果你不能使用所有列('SELECT *'),因爲其中一列是'IDENTITY'列 - 那麼你必須指定**所有**列,你想插入並且你想從'table1'中選擇....(不管怎樣,總是**總是顯式地指定你想要插入和選擇的列) –

回答

8

試試這個:

SET IDENTITY_INSERT dbo.Table2 ON 

INSERT INTO Table2 
SELECT *, 'value' AS 'COLUMN 60' FROM Table1 

SET IDENTITY_INSERT dbo.Table2 OFF 
+0

試過但是同樣的錯誤 – jpo

+0

不應該是'SELECT *,'value'FROM dbo.Table1 ....'??你想選擇一個額外的**列** - 不是從一個額外的表... –

+1

@marc_s - 我從OP的問題中剪切和粘貼,但是,我已經審查我同意 - 已編輯。 –

3

你知道你,只需要拖動從右邊SSMS中的列名?導航到表,然後拖動列文件夾複製到查詢窗口,它會列出所有列你

現在,如果你想保留標識值,則使用

SET IDENTITY_INSERT dbo.Table2 ON 

--INSERT HERE 
-- make sure to list all the columns, it is required 

SET IDENTITY_INSERT dbo.Table2 OFF 
0

是否真的需要在一個聲明中完成?

INSERT INTO Table2 
SELECT * FROM Table1 

ALTER TABLE Table2 
ADD Column60 varchar 
+0

我不想重新創建整個表格2,因爲我將失去已存在的額外列中的值 – jpo

+0

ahh,我沒有意識到您希望追加到表格2中的現有數據。抱歉。 – nullrevolution

相關問題