SQL Serverの既存のテーブルから新しいテーブルを作成する場合、次のことができます。
SELECT * into Table2
from Table1
WHERE 1=2
where句のポイントは何ですか?where句なしで試してみたところ、うまくいきました。私はインターネットの多くの例でこのwhere句を見てきましたが、それが必要な理由ではありません。
SQL Serverの既存のテーブルから新しいテーブルを作成する場合、次のことができます。
SELECT * into Table2
from Table1
WHERE 1=2
where句のポイントは何ですか?where句なしで試してみたところ、うまくいきました。私はインターネットの多くの例でこのwhere句を見てきましたが、それが必要な理由ではありません。
回答:
WHERE 1=2
そのSELECT INTO
クエリに句を配置する理由は、データのない既存のテーブルのフィールドコピーを作成するためです。
これをした場合:
select *
into Table2
from Table1
Table2
はTable1
、データ行を含むの完全な複製です。ただし、データをに含めたくない場合Table1
、テーブル構造だけが必要な場合は、WHERE
すべてのデータを除外する句を追加します。
SELECT…INTOは、既定のファイルグループに新しいテーブルを作成し、クエリから結果の行を挿入します。
WHERE
句に結果の行がない場合、新しいテーブルには何も挿入されません。したがって、データのない元のテーブルの複製スキーマになります(この場合、望ましい結果になります)。
同じ効果はTOP (0)
、たとえば次のように実現できます。
select top (0) *
into Table2
from Table1;
注:SELECT INTO
は、ソーステーブルのインデックス、制約、トリガー、またはパーティションスキーマを複製しません。