2016-05-18 126 views
1

我想比較兩個表中的所有行,如下所示。 (ID,名稱,電子郵件,移動,地址), TABLEB(ID,NAME,EMAIL,MOBILE,ADDRESS)。如何比較兩個表中結構相同的所有行值

這裏我有上面的表格,每列20列。

當有一個新行插入到表中時,我需要比較兩個表中新插入的行,如果有任何列不匹配,則將其放入另一個表中。

例如: TABLEA(1234,ABCDEF,78699EE7,印度) TABLEB(1234,ABCDEF,78699876,印度) 以上手機號碼不匹配,我需要插入的列名移動到另一個表。

請幫我解決這個問題。 謝謝。

回答

0

我相信有幾種方法可以做到這一點。但一個方式來使用SQL我的腦海裏只有使用UNION ALL

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的觸發器中。否則,你將不得不單獨運行它。

注意,上面的腳本將比較整個表格,而不僅僅是新插入的行。因此,如果任何一個表中的任何一行發生更新,而另一個表中沒有發生更新,那麼該行也會插入到第三個表中。

相關問題