当前位置:  开发笔记 > 后端 > 正文

如何计算MySQL中表之间的差异?

如何解决《如何计算MySQL中表之间的差异?》经验,为你挑选了1个好方法。

什么是计算MySQL之间的差异(在某种意义上应该从一个表中添加和删除哪些内容以获得另一个表)的好方法?



1> Jonathan Lef..:

到目前为止发布的答案(来自BrynJ和Vadim)都没有做得非常彻底.做彻底的工作也非常困难.两个答案都假设知道每个表中存在哪些ID号就足够了.但是,通常,表具有多个列.

我们打电话给表A和B.

一个重要的问题是"两个表是否具有相同的模式"?如果没有,那么一个问题是哪些列需要添加到A,哪些需要添加到B以使它们的模式相同.这是一个元数据查询,可以从系统目录中查询.应该在添加到表中的列中插入哪些值是一个有趣的问题.

让我们假设这些表实际上具有相同的模式,包括相同的主键和列之间相同的功能依赖性.我们还假设有一个ID列(存储一个唯一的整数),Name列(一个字符串)和一个DATE类型的RefDate列.

Table A                                 Table B
ID  Name         RefDate                ID  Name         RefDate
1   Frederick    2007-01-23             1   Josephine    2009-01-10

现在,需要从每个表中插入,删除,更新哪些内容才能使它们相同?

我认为可以公平地说,如果不了解更多的背景,就没有单一的答案.可能是弗雷德里克自2007年以来经历过性别变化手术,B中的记录代表了她的新身份.或者这可能是一个大错; 数据库不应存储这两个记录.或者可能有另一种解决方案.

不幸的是,来自BrynJ和Vadim的查询都表明A和B之间没有区别,这对我来说是一个可疑的命题.

顺便提一下,请注意,当行可能具有空值时比较行比不行时更复杂.例如,考虑比较名称:

没有空:

(A.Name = B.Name)

使用nulls:

(A.Name = B.Name OR (A.Name IS NULL AND B.Name IS NULL))

无论何时你都可以避免空值的另一个原因.

推荐阅读
保佑欣疼你的芯疼
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有