当社では、ほとんどの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
当社では、ほとんどの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
変数は、クエリで単純に置き換えられます。それが役立つ場合は、クエリを分解し、変数の数値(たとえば、45)と内部クエリの代わりにリストを入力した場合に考えてみてください。
SELECT *
FROM Table
WHERE 45 IN (42, 46, 47, 90, 45)
これにより、45の従業員IDを含む行が返されます。
これは意味がありますか?
あなたの質問に答えるには: はい、誰かが説明できます。おそらく私ではありません。
は、から値SELECT
のコレクションを取得します。次に、最初の句は、変数の値が選択された値のセットに含まれているかどうかをチェックします。その場合、節によって親ステートメントが行を処理します。EMP_ID
Table2
WHERE
@EMP_ID
WHERE
はSELECT
相関サブクエリです。これは、テーブル (別名として) からいくつかの値SID
およびを使用します。(上記のテーブルはコード スニペットには含まれていません。)相関サブクエリから処理された各行が評価されます。Client_Id
T1
T1