Какой смысл ГДЕ 1 = 2 для запроса SELECT INTO к таблице

39

Если мы хотим создать новую таблицу из существующей в SQL Server, мы можем сделать следующее

SELECT * into Table2
from Table1
WHERE 1=2

Какой смысл, где пункт? Я попробовал это без пункта where, и все прошло нормально. Я видел это где пункт во многих примерах в Интернете, но не причина, почему это требуется.

Мухаммед Хасан Хан
источник

Ответы:

54

Причина, по которой вы помещаете WHERE 1=2предложение в этот SELECT INTOзапрос, состоит в том, чтобы создать копию поля существующей таблицы без данных .

Если вы сделали это:

select *
into Table2
from Table1

Table2будет точной копией Table1, включая строки данных. Но если вам не нужны данные, содержащиеся в нем Table1, и вы просто хотите структуру таблицы, вы помещаете WHEREпредложение, чтобы отфильтровать все данные.

BOL SELECT INTOСсылка цитата:

SELECT… INTO создает новую таблицу в файловой группе по умолчанию и вставляет в нее результирующие строки из запроса.

Если в вашем WHEREпредложении нет результирующих строк, ни одна из них не будет вставлена ​​в новую таблицу: следовательно, вы получите дублирующую схему исходной таблицы без данных (что в данном случае будет желаемым результатом).

Тот же эффект может быть достигнут TOP (0), например, с помощью:

select top (0) *
into Table2
from Table1;

Примечание : SELECT INTOне будет дублировать индексы, ограничения, триггеры или схему исходной таблицы.

Томас Стрингер
источник