使用“IN”子句的变量的T-SQL用法

时间:2012-07-17 20:18:33

标签: tsql

在我们公司,大多数SP使用以下逻辑。我无法理解变量如何与IN子句一起使用,如下面的查询。 谁能解释一下呢?

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

2 个答案:

答案 0 :(得分:0)

在查询中简单地替换变量。如果它有帮助,如果你为变量输入一个数字(例如,45)和一个代替内部查询的列表,则分解查询并考虑它:

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

这将返回包含员工ID为45的行。

这有意义吗?

答案 1 :(得分:0)

回答你的问题:是的,有人可以解释。可能不是我。

SELECTEMP_ID获取Table2个值的集合。然后,第一个WHERE子句检查变量@EMP_ID的值是否为 所选值的集合。如果是这样,WHERE子句会导致其父语句处理该行。

SELECT是一个相关的子查询。它使用表格(别名为SID)中的几个值Client_IdT1。 (所述表格未包含在您的代码段中。)对于从T1处理的每一行,都会评估相关子查询。