SELECT INTO表查询的WHERE 1 = 2的意义是什么


39

如果要从SQL Server中的现有表创建新表,可以执行以下操作

SELECT * into Table2
from Table1
WHERE 1=2

where子句的意义是什么?我尝试了没有where子句的情况,并且运行良好。我在互联网上的许多示例中都看到过where子句,但没有看到为什么需要它的原因。

Answers:


54

WHERE 1=2在该SELECT INTO查询中放入该子句的原因是创建不包含data的现有表的字段副本。

如果您这样做:

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不会复制源表的索引,约束,触发器或分区模式。

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.