在我們公司中,大多數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
在我們公司中,大多數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
該變量只是在查詢中被替換。如果有幫助,打破了查詢,並認爲,如果你把一個號碼爲變量(例如,45)和一個列表到位內查詢:
SELECT *
FROM Table
WHERE 45 IN (42, 46, 47, 90, 45)
這將返回包含的行僱員ID爲45.
這有意義嗎?
回答你的問題:是的,有人可以解釋它。可能不是我。
SELECT
從Table2
獲得EMP_ID
值的集合。然後第一個WHERE
子句檢查變量@EMP_ID
的值是否爲,其中是所選值的集合。如果是這樣,則WHERE
子句會導致其父語句處理該行。
SELECT
是一個相關的子查詢。它使用來自表(別名爲)T1
的幾個值SID
和Client_Id
。 (該表不包含在您的代碼片段中。)對於從T1
處理的每一行,都會評估相關子查詢。
嗨加勒特&HABO,謝謝非常多的信息給出。我明白了。 – user1532888 2012-07-18 09:18:09
您可以粘貼語法上有效的查詢嗎? 'WHERE ... FROM ... WHERE'沒有意義。 – 2012-07-17 21:02:08