2

我有 2 个称为 LIVE 和 BACKUP 的同名表。

我试图做的是将 LIVE 记录与其等效的 BACKUP 记录进行比较,以查看它们是否匹配。每次访问单个 LIVE 记录时都需要进行此检查。即我只想比较记录号 59(作为示例)而不是 LIVE 表中的所有记录?

目前,我可以通过简单地逐个字段比较 LIVE 记录及其等效的 BACKUP 记录来做我想做的事情。

但是,我想知道是否可以做一个简单的“比较实时记录 A 和备份记录 A”。

我不需要知道差异是什么,甚至不需要知道它们发生在哪些领域。我只需要知道两个记录是否匹配的简单是/否。

这样的事情是否可能,或者我是否坚持逐个字段地比较表格?

非常感谢,

皮特

4

1 回答 1

1

这是一个 hack,假设列真的都是一样的:

select count(*)
from ((select *
       from live
       where record = 'A'
      ) union
      (select *
       from backup
       where record = 'A'
      )
     ) t

如果它们相同,则返回“1”,如果存在多个记录,则返回“2”。如果要确保两个值不在同一个表中,请使用修改后的形式:

select count(distinct which)
from ((select 'live' as which, l.*
       from live .
       where record = 'A'
      ) union
      (select 'backup' as which, b.*
       from backup b
       where record = 'A'
      )
     ) t;

还 。. . 注意使用union. 此处的重复删除是非常有意的。

于 2013-07-08T14:55:34.510 回答