web-dev-qa-db-ja.com

「select * into table」既存のテーブルにデータを挿入するために機能しますか

既存のテーブルの1つから別の既存のテーブルにデータを挿入しようとしています。

select * intoクエリを使用して既存のテーブルにデータを挿入することは可能ですか?ユニオンを使用して実行できると思いますが、その場合、既存のテーブルのすべてのデータを一時テーブルに記録してから、そのテーブルをドロップし、最後にユニオンを適用してすべてのレコードを同じテーブルに挿入する必要があります

例えば。

select * into #tblExisting from tblExisting
drop table tblExisting
select * into tblExisting from #tblExisting union tblActualData

ここで、tblExistingは実際にすべてのデータを格納するテーブルです。tblActualDataは、データがtblExistingに追加されるテーブルです。

それは正しい方法です。他の方法はありますか?

17
Shantanu Gupta

試してみてください

INSERT INTO ExistingTable (Columns,..)
SELECT Columns,...
FROM OtherTable

[〜#〜]挿入[〜#〜] を見てください

および SQL SERVER –あるテーブルから別のテーブルへのデータの挿入– INSERT INTO SELECT – SELECT INTO TABLE

25
Adriaan Stander

いいえ、_SELECT INTO_を使用して既存のテーブルにデータを挿入することはできません。

documentation はこれを非常に明確にします:

SELECT…INTOは、既定のファイルグループに新しいテーブルを作成し、クエリの結果の行をそこに挿入します。

テーブルの作成方法をほとんど制御できず、あらゆる種類の厄介なロックやその他のパフォーマンスの問題を引き起こす可能性があるため、通常は本番環境で_SELECT INTO_を使用しないようにします。スキーマを明示的に作成し、一時テーブルの場合でもINSERTを使用する必要があります。

4
Aaronaught

@Ryan Chase *を使用してすべての列を選択してこれを行うことはできますかはい!

INSERT INTO yourtable2 SELECT * FROM yourtable1

0
ShruS
0
adolf garlic