SELECT INTOテーブルクエリのWHERE 1 = 2のポイントは何ですか


39

SQL Serverの既存のテーブルから新しいテーブルを作成する場合、次のことができます。

SELECT * into Table2
from Table1
WHERE 1=2

where句のポイントは何ですか?where句なしで試してみたところ、うまくいきました。私はインターネットの多くの例でこのwhere句を見てきましたが、それが必要な理由ではありません。

回答:


54

WHERE 1=2そのSELECT INTOクエリに句を配置する理由は、データのない既存のテーブルのフィールドコピーを作成するためです。

これをした場合:

select *
into Table2
from Table1

Table2Table1、データ行を含むの完全な複製です。ただし、データをに含めたくない場合Table1、テーブル構造だけが必要な場合は、WHEREすべてのデータを除外する句を追加します。

BOL SELECT INTO参照の引用:

SELECT…INTOは、既定のファイルグループに新しいテーブルを作成し、クエリから結果の行挿入します。

WHERE句に結果の行がない場合、新しいテーブルには何も挿入されません。したがって、データのない元のテーブルの複製スキーマになります(この場合、望ましい結果になります)。

同じ効果はTOP (0)、たとえば次のように実現できます。

select top (0) *
into Table2
from Table1;

SELECT INTOは、ソーステーブルのインデックス、制約、トリガー、またはパーティションスキーマを複製しません。

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