を使用できます:INSERT INTOは、次のコマンドを実行すると、SELECTが存在しない列
CREATE TABLE TableA
(
A1 INT,
A2 INT
)
INSERT INTO TableA (A1, A2) VALUES (1, 2), (3, 4);
CREATE TABLE #TempTable1 (ColumnA INT, ColumnB INT);
CREATE TABLE #TempTable2 (ColumnA INT, ColumnB INT);
INSERT INTO #TempTable1 (ColumnA, ColumnB) VALUES (1, 2);
INSERT INTO #TempTable2
SELECT A1, A2
FROM TableA
WHERE A1 IN (SELECT ColumnA FROM #TempTable1);
SELECT * FROM TableA;
SELECT * FROM #TempTable1;
SELECT * FROM #TempTable2;
次のような結果は次のとおりです。
TableA
A1 A2
1 2
3 4
#TempTable1
ColumnA ColumnB
1 2
#TempTable2
ColumnA ColumnB
1 2
をしかし、私は#のTempTable2 INSERT文を変更した場合、それように、 #TempTable1から存在しない列A1を選択:
INSERT INTO #TempTable2
SELECT A1, A2
FROM TableA
WHERE A1 IN (SELECT A1 FROM #TempTable1);
その後#TempTable2はTableAのすべてのデータが含まれています:
ColumnA ColumnB
1 2
3 4
#TempTable1に列A1が存在しないため、INSERTステートメントの実行でエラーが発生しないのはなぜかと思います。私は、次のステートメントを追加しようとした場合たとえば、:
SELECT A1 FROM #TempTable1;
を私が取得:
Invalid column name 'A1'.