我有两个名为LIVE和BACKUP的缩进表。
我想要做的是将LIVE记录与其等效的BACKUP记录进行比较,看它们是否匹配。每次访问单个LIVE记录时都需要进行此检查。 即我只想比较记录号59(作为例子)而不是LIVE表中的所有记录?
目前,我可以通过简单地逐场比较LIVE记录及其等效的BACKUP记录来做我想做的事。
然而,我想知道是否可以做一个简单的“比较实时记录A和备份记录A”。
我不需要知道它们之间的差异,甚至不知道它们出现在哪个字段中。我只需要知道两个记录是否匹配的简单是/否。
这样的事情是否可能,或者我是否坚持逐场比较表格?
非常感谢,
皮特
答案 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
的使用。重复删除是非常有意的。