Какой смысл WHERE 1 = 2 для запроса SELECT INTO

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

SELECT * into Table2
from Table1
WHERE 1=2

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

37 голосов | спросил Muhammad Hasan Khan 14 PMpSat, 14 Apr 2012 21:18:20 +040018Saturday 2012, 21:18:20

1 ответ


52

Причина, по которой вы устанавливаете предложение 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 не будет дублировать индексы, ограничения, триггеры или схемы разделов исходной таблицы.

ответил Thomas Stringer 14 PMpSat, 14 Apr 2012 21:21:06 +040021Saturday 2012, 21:21:06

Похожие вопросы

Популярные теги

security × 330linux × 316macos × 2827 × 268performance × 244command-line × 241sql-server × 235joomla-3.x × 222java × 189c++ × 186windows × 180cisco × 168bash × 158c# × 142gmail × 139arduino-uno × 139javascript × 134ssh × 133seo × 132mysql × 132