2014-06-12 2 views
0
DECLARE @SomeVariableTable TABLE (
    Field INT 
) 
INSERT INTO @SomeVariableTable 
    SELECT st.Field 
    FROM  SomeTable st; 

SELECT * 

FROM  AnotherTable at 

WHERE  at.SomeField IN @SomeVariableTable 

위 코드가 어떻게 작동합니까?쿼리를 변수로 전달하는 방법

전체 열을 VARCHAR로 연결하고 VARCHAR에 대해 작동하는 동안 INT에 대해서는 작동하지 않습니다.

답변

1

코드는 마지막으로 SELECT을 제외하고는 거의 괜찮습니다. 마지막으로 SELECT 부분을 다음과 같이 변경하십시오.

SELECT * 
FROM  AnotherTable at  
WHERE  at.SomeField IN (select Field from @SomeVariableTable) 
+0

감사합니다. –

1

이 당신이 무엇을하려고 할 것이 방법입니다 .....

DECLARE @SomeVariableTable TABLE (
    Field INT 
) 
INSERT INTO @SomeVariableTable 
    SELECT st.Field 
    FROM  SomeTable st; 

SELECT * 
FROM  AnotherTable at 
WHERE  at.SomeField IN (
          SELECT Field 
          FROM @SomeVariableTable 
          ) 

그런데 왜 당신은 어쨌든 이런 짓을 했을까? 당신은 단순히 다음과 같이 할 수 있습니다

SELECT * 
FROM  AnotherTable at 
WHERE  at.SomeField IN (
          SELECT Field 
          FROM SomeTable 
          ) 
+0

테스트 목적으로 매개 변수 선택 상자를 통해 일반적으로 제공되는 매개 변수를 다시 작성해야하기 때문에. –

관련 문제