2016-05-18 5 views
1

以下のように2つのテーブルのすべての行を比較したいと思います。構造が同じである2つのテーブルのすべての行の値を比較する方法

TABLEA(ID、NAME、EMAIL、MOBILE、ADDRESS)、 TABLEB(ID、NAME、EMAIL、MOBILE、ADDRESS)。

ここには、それぞれ20本の実数を持つ上記の表があります。

テーブルに新しい行が挿入されたとき、2つのテーブルの新しく挿入された行を比較する必要があります。列の不一致があれば、別のテーブルに入れます。例えば

:携帯電話番号の上 TABLEA(1234、ABCDEF、78699EE7、INDIA) TABLEB(1234、ABCDEF、78699876、INDIA) が一致していない、私は別のテーブルにカラム名モバイルを挿入する必要があります。

私にこれを手伝ってください。 ありがとうございます。

答えて

0

私はそれを行う方法がいくつかあると確信しています。しかし、一つの方法だけUNION ALLを使用してSQLを使用して私の心に来る:あなたはこれを実行する必要がある場合に

INSERT INTO your_other_table(id, name, email, mobile, address) 
    SELECT id, name, email, mobile, address 
     FROM tableA 
    UNION ALL 
    SELECT id, name, email, mobile, address 
     FROM tableB; 

しかし、それは、明確ではありません。 INSERTは両方のテーブルに対して発生するため、同じトランザクション内で発生します。もしそうなら、上記のスクリプトはトリガーでラップすることができます。 INSERTがさまざまなトランザクションで発生し、常に同じ順序(たとえば、tableA、tableB)である場合は、tableBのトリガーで再度ラップできます。それ以外の場合は、別々に実行する必要があります。

上記のスクリプトは、新しく挿入された行だけでなく、テーブル全体を比較します。したがって、いずれかのテーブルのいずれかの行で更新が発生し、それ以外の場合は、その行も第3のテーブルに挿入されます。

関連する問題