0

我想使用以下代码将所有数据从一个表传输到另一个表:

INSERT INTO tblpremier 
   SELECT * INTO #TempTable
   FROM dbo.IntermediateTable

ALTER TABLE #TempTable
DROP COLUMN id

SELECT * FROM #TempTable

我得到一个错误

关键字“INTO”附近的语法不正确

在此代码的第二行。有什么帮助吗?

4

3 回答 3

2

你写的没有任何意义。第一个“声明”是这样的:

INSERT INTO tblpremier 
SELECT * INTO #TempTable
FROM dbo.IntermediateTable

现在您是插入#temptable 还是tblpremier?我猜你想执行所有这些操作,然后插入tblpremier- 在这种情况下,将其拆分为单独的语句。我猜你想做:

SELECT * INTO #TempTable
FROM dbo.IntermediateTable

ALTER TABLE #TempTable
DROP COLUMN id

INSERT INTO tblpremier
SELECT * FROM #TempTable

但是,与其需要#TemptableIntermediateTable减去 ID 列相同,为什么不首先选择您需要的正确列IntermediateTable而不是使用*

编辑:

这就是我的意思。编写插入语句,以便指定所有列名,并且不包括 ID 列。您将在表格副本上获得所有新的 ID 号。

INSERT INTO tblpremier (column1, column2, column3, ...)
SELECT column1, column2, column3, ...
FROM IntermediateTable

但是,如果您想在表的副本中保留相同的 ID 号,并且列在intermediate表 和上的顺序相同tblpremier,那么您可以编写:

SET IDENTITY_INSERT tblpremier ON

INSERT INTO tblpremier
SELECT * 
FROM IntermediateTable

SET IDENTITY_INSERT tblpremier OFF

但是如果一开始不为空,您仍然需要注意尝试插入重复的 ID tblpremier

于 2012-10-13T09:47:27.807 回答
1

您不能同时使用INSERT INTO TABLE SELECT FROM两者SELECT INTO。您应该将该语句分解为

INSERT INTO tblpremier 
SELECT * FROM dbo.IntermediateTable

SELECT * INTO #TempTable
FROM dbo.IntermediateTable

ALTER TABLE #TempTable
DROP COLUMN id

SELECT * FROM #TempTable
于 2012-10-13T09:46:39.690 回答
0

你在同一个语句中同时拥有 aSELECT INTO和。INSERT INTO

于 2012-10-13T09:46:20.290 回答