0

当社では、ほとんどの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
4

2 に答える 2

0

変数は、クエリで単純に置き換えられます。それが役立つ場合は、クエリを分解し、変数の数値(たとえば、45)と内部クエリの代わりにリストを入力した場合に考えてみてください。

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

これにより、45の従業員IDを含む行が返されます。

これは意味がありますか?

于 2012-07-17T20:41:50.563 に答える
0

あなたの質問に答えるには: はい、誰かが説明できます。おそらく私ではありません。

は、から値SELECTのコレクションを取得します。次に、最初の句は変数の値が選択された値のセットに含まれているかどうかをチェックします。その場合、節によって親ステートメントが行を処理します。EMP_IDTable2WHERE@EMP_IDWHERE

SELECT相関サブクエリです。これは、テーブル (別名として) からいくつかの値SIDおよびを使用します。(上記のテーブルはコード スニペットには含まれていません。)相関サブクエリから処理された各行が評価されます。Client_IdT1T1

于 2012-07-17T20:42:15.293 に答える