【问题标题】:how to compare all the row values of two tables which are identical in structure如何比较两个结构相同的表的所有行值
【发布时间】:2016-05-18 02:56:27
【问题描述】:

我想比较两个表中的所有行,如下所示。

TABLEA(ID、姓名、电子邮件、手机、地址)、 TABLEB(ID、姓名、电子邮件、手机、地址)。

这里我有上面的表格,每个表格都有 20 列。

当有新行插入表中时,我需要比较两个表中新插入的行,如果任何列不匹配,则放入另一个表中。

例如: 表(1234,ABCDEF,78699EE7,印度) 表B(1234,ABCDEF,78699876,印度) 上面的手机号码不匹配,我需要在另一个表中插入列名Mobile。

请帮助我。 谢谢。

【问题讨论】:

    标签: plsql


    【解决方案1】:

    我确信有几种方法可以做到这一点。但是我想到了一种方法,只使用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 上的触发器中。否则,您必须单独运行它。

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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2014-06-02
      • 1970-01-01
      • 1970-01-01
      • 2020-03-25
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多