0

新しいデータを含むテーブルと古いデータを含むテーブルの 2 つがあります。新しいデータから古いデータにデータをコピーする必要があります。まず、新しいデータをすべて一緒に挿入する必要があります。次に、どのテーブルを見つける必要がありますか?更新されて更新された後、テーブルにないものをすべて削除する必要があります。最初のものは簡単です。MERGE INTO x A USING(select z from c) B ON A.z = B.z WHEN NOT MATCHED THEN INSERT....

しかし、書き始めた更新に関しては、一致しないときにマージを書きましたが、一致する主キーが必要なので、それが更新するものであることを知っています。

最後の削除は問題ないはずです。新しいキーに含まれていないすべてのキーを含むテーブルを作成し、それらを削除します

問題はアップデートにあります。何か案は?

4

1 に答える 1

2

これがあなたにいくつかのアイデアを与えることを願っています

--Synchronize source data with target
MERGE INTO dbo.tbl_Target AS t
    USING dbo.tbl_Source AS s    
        ON t.id = s.id
    WHEN MATCHED AND (t.name != s.name OR t.qty!= s.qty) THEN
        --Row exists and data is different
        UPDATE SET t.name = s.name, t.qty = s.qty
    WHEN NOT MATCHED BY TARGET THEN 
        --Row exists in source but not in target
        INSERT VALUES (s.id, s.name, s.qty) 
    WHEN NOT MATCHED BY SOURCE THEN 
        --Row exists in target but not in source
        DELETE OUTPUT$action, inserted.id, deleted.id
于 2013-10-09T20:50:02.707 に答える