データを別のテーブルにコピーする


154

SQL Serverで、あるスキーマのデータを同じスキーマの別のテーブルにコピー/追加する方法は?

編集:

クエリがあるとしましょう

select * 
into table1 
from table2 
where 1=1 

table1同じスキーマとデータで作成されtable2ます。

データ全体を既存のテーブルにのみコピーするこのような短いクエリはありますか?


完全な情報のためだけに、このコマンドはテーブルのインデックスとトリガーをコピーしないように注意してください!コピー、インデックスとトリガスクリプトのポストは、以下を参照してください:stackoverflow.com/questions/7582852/...
HausO

これを解決するには?INSERT INTO newTable (col1, col2, col3,col4) values ((SELECT column1, column2, column3 FROM oldTable where condition),'string');

回答:


310

両方のテーブルが本当に同じスキーマである場合:

INSERT INTO newTable
SELECT * FROM oldTable

それ以外の場合は、列名を指定する必要があります(newTableすべての列の値を指定し、newTableのスキーマと同じ順序で列を選択する場合、の列リストはオプションです)。

INSERT INTO newTable (col1, col2, col3)
SELECT column1, column2, column3
FROM oldTable

1
blank dataいくつかの列に入力したい場合はどうなりますか?
hud

3
@coderは単なるselect句なので、明示的なNULLs、文字列定数、式、さらにはサブクエリなど、必要なものを何でも入れてかまいません。
lc。

なぜこれが機能しないのかINSERT INTO newTable (col1, col2, col3,col4) values ((SELECT column1, column2, column3 FROM oldTable where condition),'string');

1
@AbdullahNurumスカラークエリが複数の列を選択しているため。参照stackoverflow.com/questions/4141370/...をしてstackoverflow.com/questions/6254913/...
LCを。

1
両方のテーブルが同様のスキーマを提示するが、「ID仕様」がYESの列がある場合、SQLステートメントはID仕様の列を除くすべての列を列挙する必要があります。
ガブリエルマリウスポペスク2018年

18

これは適切な方法です。

INSERT INTO destinationTable
SELECT * FROM sourceTable

16

新しいテーブルが存在せず、古いテーブルのすべてをコピーしたい場合の簡単な方法は、SQL Serverで動作します。

SELECT * INTO NewTable FROM OldTable

11
INSERT INTO table1 (col1, col2, col3)
SELECT column1, column2, column3
FROM table2                                        



4
INSERT INTO DestinationTable(SupplierName, Country)
SELECT SupplierName, Country FROM SourceTable;

列名を同じにする必要はありません。


3

条件付きの選択した列を挿入

INSERT INTO where_to_insert (col_1,col_2) SELECT col1, col2 FROM from_table WHERE condition;

同じ列名を使用して、1つのテーブルから別のテーブルにすべてのデータをコピーします。

INSERT INTO where_to_insert 
SELECT * FROM from_table WHERE condition;

0
CREATE TABLE `table2` LIKE `table1`;
INSERT INTO `table2` SELECT * FROM `table1`;

最初のクエリはfromから構造体を作成table1table2、2番目のクエリはtable1to からデータを配置しますtable2

弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.