0

次のコードを使用して、あるテーブルから別のテーブルにすべてのデータを転送したい:

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

ALTER TABLE #TempTable
DROP COLUMN id

SELECT * FROM #TempTable

そして、私はエラーが発生します

キーワード「INTO」付近の構文が正しくありません

このコードの 2 行目。何か助けて?.

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

しかし、ID 列を引いたもの#Temptableと同じである必要があるのではなく、最初から必要な正しい列を選択するだけではなく、IntermediateTableIntermediateTable*

編集:

これが私が意味したことです。指定されたすべての列名を取得し、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

tblpremierただし、最初に が空でない場合、重複する ID を挿入しようとすることに注意する必要があります。

于 2012-10-13T09:47:27.807 に答える
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
于 2012-10-13T09:46:39.690 に答える
0

同じステートメントにSELECT INTOとの両方があります。INSERT INTO

于 2012-10-13T09:46:20.290 に答える