比较2个相同的MySQL表

时间:2013-07-08 14:41:17

标签: mysql

我有两个名为LIVE和BACKUP的缩进表。

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

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

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

我不需要知道它们之间的差异,甚至不知道它们出现在哪个字段中。我只需要知道两个记录是否匹配的简单是/否。

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

非常感谢,

皮特

1 个答案:

答案 0 :(得分:1)

这是一个黑客攻击,假设列完全相同:

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的使用。重复删除是非常有意的。