我想使用以下代码将所有数据从一个表传输到另一个表:
INSERT INTO tblpremier
SELECT * INTO #TempTable
FROM dbo.IntermediateTable
ALTER TABLE #TempTable
DROP COLUMN id
SELECT * FROM #TempTable
我得到一个错误
关键字“INTO”附近的语法不正确
在此代码的第二行。有什么帮助吗?
我想使用以下代码将所有数据从一个表传输到另一个表:
INSERT INTO tblpremier
SELECT * INTO #TempTable
FROM dbo.IntermediateTable
ALTER TABLE #TempTable
DROP COLUMN id
SELECT * FROM #TempTable
我得到一个错误
关键字“INTO”附近的语法不正确
在此代码的第二行。有什么帮助吗?
你写的没有任何意义。第一个“声明”是这样的:
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
但是,与其需要#Temptable
与IntermediateTable
减去 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
。
您不能同时使用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
你在同一个语句中同时拥有 aSELECT INTO
和。INSERT INTO