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

Muh*_*han 40 sql-server

如果我们想从 SQL Server 中的现有表创建一个新表,我们可以执行以下操作

SELECT * into Table2
from Table1
WHERE 1=2
Run Code Online (Sandbox Code Playgroud)

where 子句的重点是什么?我在没有 where 子句的情况下尝试了它,它运行良好。我已经在互联网上的许多示例中看​​到了这个 where 子句,但不是需要它的原因。

Tho*_*ger 55

您将该WHERE 1=2子句放入该SELECT INTO查询的原因是创建一个没有数据的现有表的字段副本。

如果你这样做:

select *
into Table2
from Table1
Run Code Online (Sandbox Code Playgroud)

Table2将是 的完全副本Table1,包括数据行。但是如果你不想要包含在 中的数据Table1,而你只想要表结构,你可以放置一个WHERE子句来过滤掉所有的数据。

BOLSELECT INTO参考报价:

SELECT...INTO 在默认文件组中创建一个新表,并将查询的结果行插入其中。

如果您的WHERE子句没有结果行,则不会将任何行插入到新表中:因此,您最终会得到没有数据的原始表的重复模式(在这种情况下这将是所需的结果)。

可以使用 实现相同的效果TOP (0),例如:

select top (0) *
into Table2
from Table1;
Run Code Online (Sandbox Code Playgroud)

注意SELECT INTO不会复制源表的索引、约束、触发器或分区架构。