有没有办法将除Identity
列之外的所有列值从一个表复制到另一个表,而没有提及所有其余列名?
我有一个包含63列的表格。我用 -
创建了一个临时表SELECT * INTO #TmpWide FROM WideTable WHERE 1 = 0
现在我想将一些数据从WideTable复制到#TmpWide。除了Identity
Id列之外,我需要WideTable的所有列,因为我希望复制的数据在#TmpWide中从1开始具有自己的顺序ID。是否可以不提及(63-1)列名?
答案 0 :(得分:1)
您可以尝试在创建表后删除列:
SELECT * INTO #TmpWide FROM WideTable WHERE 1=0
ALTER TABLE #TmpWide DROP COLUMN [Id]
这确实感觉有点难看或者黑客攻击,但它应该可以解决问题。
答案 1 :(得分:1)
没有办法做到这一点,但在这种情况下使用*也是一个坏主意。如果WideTable发生更改,您将被迫更改SELECT *的存储过程。我写了数百个像这样的存储过程,它所做的只是创造我今天仍在处理的噩梦。祝你好运。