SELECT * INTO语句出错

时间:2012-10-13 09:44:39

标签: sql sql-server-2008

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

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

ALTER TABLE #TempTable
DROP COLUMN id

SELECT * FROM #TempTable

我收到错误

  

关键字“INTO”

附近的语法不正确

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

3 个答案:

答案 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

但是,除了需要#TemptableIntermediateTable相同而不是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 FROMSELECT 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 INTOINSERT INTO