2012-10-10 4 views
0

SQL 서버에서 매우 이상한 것을 발견했습니다. 나는 그것이 정상적인 것인지 확신하지 못한다.SQL 서버 2008의 테이블 변수 자체 참조

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

항상 0 행이 삽입됩니다. @table 대신 실제 테이블을 사용하면 정상적으로 작동합니다.

내 검색어에 아무것도 표시되지 않습니까?

+0

일부 코드를 표시하십시오. –

+0

Stackoverflow가 허용하지 않으므로 igore 주위에 '@'를 입력하십시오. 또한 실제 테이블에서도 작동하지 않습니다. – user1733394

+0

테이블의 별칭을 추가하고 명시 적으로 열 이름을 한정합니다. 그러면 어떻게됩니까? – HABO

답변

0

테이블 변수는 다른 일반적인 변수와 마찬가지로 범위가 한정되어 있으므로 특정 SQL 문에서이 변수를 사용하는 경우 해당 범위 만 해당됩니다.이 시점에서 @tablevariable에 없으면 아무 것도 포함하지 않습니다. 다음과 같은 it.Hence 기록 쿼리 데이터 :

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

이 쿼리는 here.It 항상 TableB의 모든 레코드를 삽입 달성 하려는지 달성하지 않습니다.