我在SQL服务器中发现了一件非常奇怪的事情。我不确定这是否正常。
insert @table
select ID, Lastname
from tableB
where ID NOT IN ( select ID from @Table)
总是说插入了0行。 如果我使用物理表而不是@table,它可以正常工作。
我的查询中是否有任何遗漏?
答案 0 :(得分:0)
由于Table变量与任何其他正常变量一样是特定于范围的。所以当你在任何特定的sql语句中使用它时,它的范围只是那个。就像你在@table变量中所说的那样,此时它不包含任何数据在it.Hence写下面的查询:
INSERT INTO @table
select ID, Lastname from tableB where ID NOT IN ( select ID from @Table)
此查询永远不会实现您在此处尝试实现的目标。它始终会插入tableB中的所有记录。