SELECT * into Table2
from Table1
WHERE 1=2
where子句的意义是什么?我尝试了没有where子句的情况,并且运行良好。我在Internet上的许多示例中都已经看到了where子句,但是没有看到为什么需要它的原因。
#1 楼
在该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
不会复制源表的索引,约束,触发器或分区架构。