2016-05-18 26 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的触发器中。否则,你将不得不单独运行它。

注意,上面的脚本将比较整个表格,而不仅仅是新插入的行。因此,如果任何一个表中的任何一行发生更新,而另一个表中没有发生更新,那么该行也会插入到第三个表中。

相关问题