2012-10-10 27 views
0

我在SQL服務器中發現了一件很奇怪的事情。我不確定這是否正常。SQL服務器2008中的表變量自引用

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

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

我在查詢中錯過任何內容嗎?

+0

請顯示一些代碼。 –

+0

請圍繞@ igore',因爲Stackoverflow不允許。它也不適用於物理表。 – user1733394

+0

爲表添加別名並明確限定列名。然後會發生什麼? – HABO

回答

0

由於Table變量與任何其他正常變量相同,因此在任何特定的SQL語句中使用它時,其範圍僅限於此。在此時,您不在@tablevariable中說它不包含任何在it.Hence書面查詢數據如下圖所示:

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

該查詢永遠不會達到你想要達到here.It總是把所有的記錄從tableB的東西。