table1
すでに存在すると言っtable2
て、これらのクエリに違いはありますか
クエリ1 :-
select * into table1 from table2 where 1=1
クエリ2: -
insert into table1 select * from table2
table1
すでに存在すると言っtable2
て、これらのクエリに違いはありますか
クエリ1 :-
select * into table1 from table2 where 1=1
クエリ2: -
insert into table1 select * from table2
は table1 を作成し、そこselect * into table1 from table2 where 1=1
に table2 の値を挿入します。そのため、テーブルが既に作成されている場合、そのステートメントはエラーになります。
insert into table1 select * from table2
table2 の値を table1 に挿入するだけです。
1 つ目 ( SELECT INTO
) は、新しいテーブルを作成して入力し、2 つ目 ( INSERT... SELECT
) は既存のテーブルに挿入します。
2008 年より前のバージョンの SQL Server では、最初のログは最小限に記録され、2 番目のログは記録されませんでしたが、これはもはや当てはまりません。
select * into table1 from table2 where 1=1
上記のクエリでは、テーブルが存在しないことが必要です。すべての列はソース テーブルから取得されるときに作成されるため、列を指定する必要はありません。
insert into table1 select * from table2
上記のクエリでは、EXISTING table1 が必要です。両方のテーブルの列もまったく同じ順序にする必要があります。そうでない場合は、両方のテーブルの列リストを提供する必要があります。
以下のクエリでtable1
は、作成されるか、既に存在する場合はエラーがスローされます
select * into table1 from table2 where 1=1
以下のクエリでは、コマンドを実行する前にテーブルが存在しているtable1
必要があります
insert into table1 select * from table2
INSERT INTO TABLE_A SELECT * FROM TABLE_B
テーブルの値を別のテーブルに挿入するために使用される一般的に使用される文です。これを使用して、選択した列を挿入することもできます。
SELECT * INTO TABLE_A FROM TABLE_B
TABLE_B の値が入力された新しい TABLE_A を作成します