2013-02-25 31 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

相关问题