Wozu dient WHERE 1 = 2 für SELECT INTO-Tabellenabfragen?

39

Wenn wir eine neue Tabelle aus einer vorhandenen in SQL Server erstellen möchten, können wir Folgendes tun

SELECT * into Table2
from Table1
WHERE 1=2

Was ist der Sinn der Where-Klausel? Ich habe es ohne die where-Klausel versucht und es lief gut. Ich habe diese where-Klausel in vielen Beispielen im Internet gesehen, aber nicht den Grund, warum sie erforderlich ist.

Muhammad Hasan Khan
quelle

Antworten:

54

Der Grund, warum Sie die WHERE 1=2Klausel in diese SELECT INTOAbfrage einfügen, besteht darin, eine Feldkopie der vorhandenen Tabelle ohne Daten zu erstellen .

Wenn du das getan hast:

select *
into Table2
from Table1

Table2wäre ein genaues Duplikat Table1, einschließlich der Datenzeilen. Wenn Sie jedoch nicht möchten, dass die Daten enthalten sind Table1, sondern nur die Tabellenstruktur, setzen Sie eine WHEREKlausel, um alle Daten herauszufiltern.

BOL SELECT INTOReferenzzitat :

SELECT… INTO erstellt eine neue Tabelle in der Standarddateigruppe und fügt die resultierenden Zeilen aus der Abfrage in diese ein.

Wenn Ihre WHEREKlausel keine resultierenden Zeilen enthält, wird keine in die neue Tabelle eingefügt: Daher erhalten Sie das doppelte Schema der ursprünglichen Tabelle ohne Daten (was in diesem Fall das gewünschte Ergebnis wäre).

Der gleiche Effekt kann TOP (0)zum Beispiel erzielt werden mit :

select top (0) *
into Table2
from Table1;

Hinweis : Die SELECT INTOIndizes, Einschränkungen, Trigger oder das Partitionsschema der Quellentabelle werden nicht dupliziert.

Thomas Stringer
quelle