0

有没有办法将所有列值从一个表复制到除Identity列之外的另一个表,而不提及所有其余列名?

我有一张有 63 列的表。我创建了一个临时表 -

SELECT * INTO #TmpWide FROM WideTable WHERE 1 = 0  

现在我想将一些数据从 WideTable 复制到#TmpWide。我需要除IdentityId 列之外的 WideTable 的所有列,因为我希望复制的数据在#TmpWide 中从 1 开始具有自己的顺序 Id。是否可以不提及 (63-1) 列名?

4

2 回答 2

1

您可以在创建表后尝试删除该列:

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

这确实感觉有点丑陋或hack-y,但它应该可以解决问题。

于 2013-02-25T04:48:27.337 回答
1

没有办法做到这一点,但在这种情况下使用 * 也是一个坏主意。如果 WideTable 发生更改,您将被迫更改 SELECT * 从中选择的存储过程。我写了数百个这样的存储过程,它所做的只是创造了我今天仍在处理的噩梦。祝你好运。

于 2013-02-25T04:53:43.983 回答