2017-01-18 7 views
-1

私は最初のテーブルの列1の値を検索して、別のテーブルの値と一致するかどうかを確認する必要があります。SQL Serverの2番目のテーブルの各行の値を比較しますか?

これは、最初のテーブルの最後の行が比較されるまでループを継続する必要があります。

+2

あなたの質問は不明です。現在のデータと予想される結果を投稿してください。また、ここに尋ねる前に何を試しましたか?どういうことですか? –

+0

私は2つのテーブルを持っています。テーブルAとテーブルB.列ABCのテーブルBの出口が行の最後までループ内になければならない場合、値が1の列ABCをチェックしなければなりません。 – RAHUL

+1

同じことをもう一度書くことは本当に助けにはなりません。あなたは、あなたが望むものの例を追加する必要があります。例にはテーブルの内容と結果が含まれています。あなたの質問を編集してください。 –

答えて

1

ループが必要ありません。あなたが最初のテーブルの行が列1に基づいて一致していない反対を見つけるにはexists()

select * 
    from FirstTable 
    where exists (
    select 1 
    from SecondTable 
    where FirstTable.Column1 = SecondTable.Column1 
    ); 

を使用してセットベースの操作としてこれを簡単に行うことができます、あなたはnot exists()

select * 
    from FirstTable 
    where not exists (
    select 1 
    from SecondTable 
    where FirstTable.Column1 = SecondTable.Column1 
    ); 
を使用することができます

一致する行を特定して使用しないようにしたい場合は、

select FirstTable.* 
    , MatchFound = case when x.Column1 is null then 'No' else 'Yes' end 
    , x.Column1 
    from FirstTable 
    outer apply (
    select top 1 
     * 
    from SecondTable 
    where FirstTable.Column1 = SecondTable.Column1 
    ) as x 
+0

比較する必要があるテーブルに30行あります。第1テーブルの行と第2テーブルの行があります。 – RAHUL

+0

これは、最初のテーブルのすべての行を比較し、2番目のテーブルのすべての行をチェックします。あなたは何を探していますか? – SqlZim

関連する問題