0

我在 SQL Server 中发现了一件很奇怪的事情。我不确定这是否正常。

insert @table
select ID, Lastname
from tableB
where ID NOT IN ( select ID from @Table)

它总是说插入了 0 行。如果我使用物理表而不是@table,它可以正常工作。

我错过了查询中的任何内容吗?

4

1 回答 1

0

由于 Table 变量像任何其他普通变量一样是特定于范围的。因此,当您在任何特定的 sql 语句中使用它时,它的范围仅此而已。正如您所说的,此时不在 @tablevariable 中,它不包含任何数据。因此编写如下查询:

INSERT INTO @table
select ID, Lastname from tableB where ID NOT IN ( select ID from @Table)

此查询将永远无法实现您在此处尝试实现的目标。它始终插入 tableB 中的所有记录。

于 2012-10-10T04:25:38.067 回答