2017-07-30 10 views
0

私は、2つのテーブルを持っています。その意味で比較したいのは、circuitIdが2つのカラムで同一であれば、CHECKSUMカラムが同じ同じことは何もしないで、新しいレコードをテーブルに挿入します。 circiutIdがテーブルに存在しない場合は、新しい行も追加する必要があります。2つのテーブルを比較して削除と更新を処理する

これまで私はこれを持っていましたが、実装する方法がわからないので、ロジックの内部でWHEN MATCHED THENにしてください。その内部でチェックサムが同じであるかどうかをチェックし、それによってレコードを挿入しますか?

MERGE INTO ARCHIVE.F1_CIRCUITS n 
     USING EXTRACT.F1_CIRCUITS o 
     ON 
     (n.CIRCUITID= o."circuitId") 
     WHEN MATCHED THEN 
     WHEN NOT MATCHED THEN 
      INSERT VALUES 
      ("circuitId","circuitRef","name","location","country","lat","lng","alt","url", CURRENT_TIMESTAMP, NULL, HASH_MD5("circuitId","circuitRef","name","location","country","lat","lng","alt","url"), 'C', 0) 

答えて

0

私はinsertが十分にあると思う:

INSERT INTO ARCHIVE.F1_CIRCUITS (. . .) 
    SELECT . . . 
    FROM EXTRACT.F1_CIRCUITS o 
    WHERE NOT EXISTS (SELECT 1 
         FROM ARCHIVE.F1_CIRCUITS n 
         WHERE o.circuitid = n.circuitid AND 
          o.checksum = n.checksum 
        ); 

. . .は、さまざまな列名と式のためです。

関連する問題