2012-07-17 4 views
0

우리 회사에서는 대부분의 SP에서 다음 논리가 사용됩니다. 다음 쿼리와 같이 IN 절에서 변수를 사용하는 방법을 이해할 수 없습니다. 누구든지 이것을 설명 할 수 있습니까?"IN"절이있는 변수의 T-SQL 사용

WHERE ((@EMP_ID) in (select distinct(EMP_ID) 
from Table2(nolock) 
where SID = T1.SID and status='A' and client_id=T1.Client_Id)) 
order by EMP_ID 
+0

구문 적으로 유효한 쿼리를 붙여 넣을 수 있습니까? '어디서 ... 어디서 ...? '는 말이되지 않습니다. –

답변

0

변수는 단순히 쿼리에서 대체됩니다. 도움이된다면, 쿼리를 분해하고 내부 쿼리 대신에 (예를 들어, 45) 변수의 번호와 목록을 넣을 경우 생각 :

SELECT * 
FROM Table 
WHERE 45 IN (42, 46, 47, 90, 45) 

이 포함 된 행을 반환합니다 직원 ID는 45입니다.

의미가 있습니까?

0

질문에 대답하려면 : 예, 누군가 설명 할 수 있습니다. 아마 내가 아니야.

SELECTEMP_ID의 컬렉션을 Table2에서 가져옵니다. 그런 다음 첫 번째 WHERE 절은 변수 @EMP_ID의 값이의 인 지 선택한 값 집합에 있는지 확인합니다. 그렇다면 WHERE 절은 부모 문이 행을 처리하도록합니다.

SELECT은 상관 하위 쿼리입니다. 이라는 테이블 (SIDClient_Id)의 값을 사용합니다. (해당 테이블은 코드 단편에 포함되어 있지 않습니다.) T1에서 처리 된 각 행에 대해 상관 된 하위 쿼리가 평가됩니다.

+0

안녕 Garrett & HABO, 주어진 정보에 대해 대단히 감사합니다. 나는 그 점을 알고있다. – user1532888