我想使用以下代码将所有数据从一个表传输到另一个表:
INSERT INTO tblpremier
SELECT * INTO #TempTable
FROM dbo.IntermediateTable
ALTER TABLE #TempTable
DROP COLUMN id
SELECT * FROM #TempTable
我收到错误
关键字“INTO”
附近的语法不正确
在此代码的第二行。有什么帮助吗?
答案 0 :(得分: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
但是,除了需要#Temptable
与IntermediateTable
相同而不是ID列之外,为什么不首先从IntermediateTable
中选择正确的列而不是{ {1}}?
修改强>
这就是我的意思。编写insert语句,以便指定所有列名,并且不包含ID列。您将在表的副本上获得所有新的ID号。
*
但是,如果您希望在表的副本中保留相同的ID号,并且INSERT INTO tblpremier (column1, column2, column3, ...)
SELECT column1, column2, column3, ...
FROM IntermediateTable
表和intermediate
上的列的顺序相同,那么您可以编写:
tblpremier
但如果SET IDENTITY_INSERT tblpremier ON
INSERT INTO tblpremier
SELECT *
FROM IntermediateTable
SET IDENTITY_INSERT tblpremier OFF
最初不为空,您仍需要注意尝试插入重复的ID。
答案 1 :(得分: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
答案 2 :(得分:0)
您在同一声明中同时拥有SELECT INTO
和INSERT INTO
。