web-dev-qa-db-ja.com

SQL Serverの「select * into」と「insert into ..select *

いう table1およびtable2は既に存在しますが、これらのクエリに違いはありますか

query1:-

select * into table1 from table2 where 1=1

query2:-

insert into table1 select * from table2
28

select * into table1 from table2 where 1=1はtable1を作成し、そこにtable2の値を挿入します。そのため、テーブルが既に作成されている場合、そのステートメントはエラーになります。

insert into table1 select * from table2は、table1にtable2の値のみを挿入します。

42
aF.

最初の1つ ( - SELECT INTO )は、2番目に新しいテーブルを作成してデータを取り込みます( INSERT... SELECT )既存のテーブルに挿入します。

2008より前のバージョンのSQL Serverでは、最初のログは最小限に記録され、2番目のログはそうではありません これはもはや真実ではありません

8
Martin Smith
select * into table1 from table2 where 1=1

上記のクエリでは、テーブルが存在しないことが必要です。すべての列はソーステーブルから取得されるため作成されるため、列を指定する必要はありません。

insert into table1 select * from table2 

上記のクエリでは、EXISTING table1が必要です。両方のテーブルの列も同じ順序である必要があります。そうでない場合は、両方のテーブルの列リストを提供する必要があります。

5
Charl

Query2では、テーブルtable1必須コマンドを実行する前に存在する

Query1では、table1が作成されるか、既に存在する場合はエラーがスローされます

3
gbn
INSERT INTO TABLE_A SELECT * FROM TABLE_B

テーブルの値を別のテーブルに挿入するために使用される一般的に使用される文です。これを使用して、選択した列を挿入することもできます。

SELECT * INTO TABLE_A FROM TABLE_B

TABLE_Bの値が入力された新しいTABLE_Aを作成します

1
ssingh

a)table = 1からtable1に*を選択します(1 = 1の場合)-table1とtable2が既に存在する場合、クエリを実行すると以下のエラーが発生します。 「メッセージ2714、レベル16、状態6、行1データベースに「table1」という名前のオブジェクトが既に存在します」

b)table1に挿入select * from table2-table1がtable2の複製である場合、このクエリは一般的な挿入ステートメントを考慮しますExp:select * *クエリ。

0
Ruben_02041980