2012-07-17 28 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

您可以粘貼語法上有效的查詢嗎? 'WHERE ... FROM ... WHERE'沒有意義。 – 2012-07-17 21:02:08

回答

0

該變量只是在查詢中被替換。如果有幫助,打破了查詢,並認爲,如果你把一個號碼爲變量(例如,45)和一個列表到位內查詢:

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

這將返回包含的行僱員ID爲45.

這有意義嗎?

0

回答你的問題:是的,有人可以解釋它。可能不是我。

SELECTTable2獲得EMP_ID值的集合。然後第一個WHERE子句檢查變量@EMP_ID的值是否爲,其中是所選值的集合。如果是這樣,則WHERE子句會導致其父語句處理該行。

SELECT是一個相關的子查詢。它使用來自表(別名爲)T1的幾個值SIDClient_Id。 (該表不包含在您的代碼片段中。)對於從T1處理的每一行,都會評估相關子查詢。

+0

嗨加勒特&HABO,謝謝非常多的信息給出。我明白了。 – user1532888 2012-07-18 09:18:09