2016-07-13 10 views
0

別のテーブルから値を検索しようとしていて、6-7列の値が異なる場合は、それらを既存のテーブルに挿入してフラグを変更しています。SQLのシーケンシャル検索

具体的な検索方法がありますか、または順次検索を使用する必要がありますか?これは例えば、SQL

にどのように動作するかわからない:

表A

A B C D Flg 
1 2 3 4 N 
2 1 4 3 N 
3 3 2 1 N 
4 4 1 2 N 
5 2 1 2 N 
1 3 3 4 Y --(flg changed because values in column B changed) 

ロジックは、値が変更されたときに見つけるためにテーブルを横断して、フラグを更新し、別のテーブルにそれらの値を挿入します。

+0

を使用してください。https://msdn.microsoft.com/en-ca/library/ms189788.aspx –

+0

ロジックを説明できますか?私はすべての列がcolumn2だけでなく値も変化しているのを見る。 –

+0

上記の例では、列Aは主キー(文字通りではない)として扱われるので、列Aに重複があるときはいつでも列値に変更があるかどうかチェックし、Ch_FlgをYとマークして新しい最新の値を同じテーブルに記録する –

答えて

0

データがどこから来ているのか、どのテーブルがそれを受信して​​いるのかわかりません。一度に1つの行だけを扱っていて、自己完結型である必要がある場合は、insertこれはおそらく必要なものです。

;with MyData(A, B, C, D) as (
    select * from (values (1, 3, 3, 4)) as v 
) 
insert into Table1 (A, B, C, D, Flg) 
select A, B, C, D, 'Y' 
from MyData as d 
where not exists (
    select 1 from Table2 as t 
    where t.A = d.A and t.B = d.B and t.C = d.C and t.D = d.D 
); 

は、私はおそらくあなたがすでに持っている装備どんな方法よりも、これを行うための非常にクリーンな方法があることを予感しています。