【问题标题】:table variable self reference in SQL server 2008SQL Server 2008 中的表变量自引用
【发布时间】:2012-10-10 01:42:02
【问题描述】:

我在 SQL Server 中发现了一个很奇怪的东西。我不确定这是否正常。

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

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

我的查询中有什么遗漏吗?

【问题讨论】:

  • 请忽略 @ 周围的 '',因为 Stackoverflow 不允许这样做。它也不适用于物理表。
  • 为表添加别名并明确限定列名。然后会发生什么?
  • 对不起我的错误。 DonorID NOT IN(从 uAppealMembers 中选择 CommunityID)应该是正确的。解决了。​​
  • 请将您的代码放在问题中,而不是在评论中。我试着为你做,但格式完全丢失了。请尽快完成,否则可能会被关闭。

标签: sql-server-2008 table-variable self-reference


【解决方案1】:

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

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

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

【讨论】:

    猜你喜欢
    • 2012-03-29
    • 1970-01-01
    • 1970-01-01
    • 2011-12-06
    • 2010-11-02
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-07-28
    相关资源
    最近更新 更多