我想比较两个表中的所有行,如下所示。
TABLEA(ID,NAME,电子邮件,移动,ADDRESS), TABLEB(ID,NAME,电子邮件,移动,ADDRESS)。
这里我有上面的表格,每个表格都有20列。
当一个新行插入表中时,我需要比较两个表中新插入的行,如果有任何列不匹配,则将其放入另一个表中。
例如: TABLEA(1234,ABCDEF,78699EE7,印度) TABLEB(1234,ABCDEF,78699876,印度) 以上手机号码不匹配,我需要将列名称Mobile插入另一个表格。
请帮我解决这个问题。 谢谢。
答案 0 :(得分:0)
我确信没有办法做到这一点。但只有一种方法是使用SQL 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的触发器中。否则,您必须单独运行它。
注意,上面的脚本将比较整个表,而不仅仅是新插入的行。因此,如果任何一个表中的任何行发生任何更新,而不是另一个表中的任何行,则该行也将插入第三个表中。