いう table1
およびtable2
は既に存在しますが、これらのクエリに違いはありますか
query1:-
select * into table1 from table2 where 1=1
query2:-
insert into table1 select * from table2
select * into table1 from table2 where 1=1
はtable1を作成し、そこにtable2の値を挿入します。そのため、テーブルが既に作成されている場合、そのステートメントはエラーになります。
insert into table1 select * from table2
は、table1にtable2の値のみを挿入します。
最初の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が必要です。両方のテーブルの列も同じ順序である必要があります。そうでない場合は、両方のテーブルの列リストを提供する必要があります。
Query2では、テーブルtable1
必須コマンドを実行する前に存在する
Query1では、table1
が作成されるか、既に存在する場合はエラーがスローされます
INSERT INTO TABLE_A SELECT * FROM TABLE_B
テーブルの値を別のテーブルに挿入するために使用される一般的に使用される文です。これを使用して、選択した列を挿入することもできます。
SELECT * INTO TABLE_A FROM TABLE_B
TABLE_Bの値が入力された新しいTABLE_Aを作成します
a)table = 1からtable1に*を選択します(1 = 1の場合)-table1とtable2が既に存在する場合、クエリを実行すると以下のエラーが発生します。 「メッセージ2714、レベル16、状態6、行1データベースに「table1」という名前のオブジェクトが既に存在します」
b)table1に挿入select * from table2-table1がtable2の複製である場合、このクエリは一般的な挿入ステートメントを考慮しますExp:select * *クエリ。