0

ストアド プロシージャを使用して、SQL Server テーブルに存在するデータを検証しようとしています。検証ルールの 1 つで、特定の列の値が別のテーブルに存在するかどうかを確認する必要があります。

次の列Cat_ID、Amount、SRC_CDEを持つステージングテーブルがあるとします

次の列 CatID 、 Cat_Name を持つ「maintable」があります

ステージング テーブルに存在する Cat_ID が各行の「maintable」に存在するかどうかを検証する必要があります

次のステートメントを使用して検証しています

if((Select count(*) from maintable where CatID= @Cat_id) >0 )
-- Do something if data present

すべての行に選択クエリを使用する以外に、上記のことを行うより良い方法があるかどうかを知りたいです。

選択クエリを使用する代わりに、メインテーブルとチェックからすべての CatID を取得できる何らかの配列を使用できますか。

ありがとう

4

1 に答える 1

1

a を使用して、left joinすべての無効な行を一覧表示します。

select
     staging.*
from
    staging
          left join maintable 
               on staging.catid=maintable.catid
where maintable.catid is null
于 2013-08-22T12:10:18.107 に答える