2013-02-25 52 views
0

有沒有辦法從一個表中的所有列的值複製到另一個除了Identity列,就不能不提列名的所有的休息?數據複製到另一個不同的標識列

我有63列的表。我創建了一個臨時表 -

SELECT * INTO #TmpWide FROM WideTable WHERE 1 = 0 

現在我想將一些數據從WideTable複製到#TmpWide。除了Identity Id列以外,我需要WideTable的所有列,因爲我希望複製的數據在#TmpWide中從1到前有自己的順序Id。沒有提及(63-1)列名可能嗎?

回答

1

你可以嘗試刪除列在創建表後:

SELECT * INTO #TmpWide FROM WideTable WHERE 1=0 
ALTER TABLE #TmpWide DROP COLUMN [Id] 

這確實覺得有點醜,破解-Y,但它應該做的伎倆。

+0

我已經嘗試過的把戲。刪除列,複製數據,然後添加一個新的標識列 - 給我*完全*我所需要的。但它似乎對SP的整體性能有影響。 – atiyar 2013-02-25 05:47:43

1

沒有辦法做到這一點,但也實在是一個壞主意,使用*在這樣的情況下。如果WideTable發生更改,您將被迫更改SELECT *的存儲過程。我寫了數百個這樣的存儲過程,它所做的只是今天仍在處理的創建噩夢。祝你好運。

+0

在這種特定情況下,在處理#TmpWide中的數據後,它們將被複制回WideTable。所以,我不認爲改變WideTable會帶來麻煩。但無論如何非常感謝。絕對是其他場景的寶貴提示。 – atiyar 2013-02-25 05:57:49

相關問題