在MySQL中的表之间计算差异(从某种意义上应该添加或删除一个表以获得另一个表)的好方法是什么?如何计算MySQL中的表之间的差异?
2
A
回答
1
你也可以使用一个左外连接(第一告诉你在哪里在表中存在行,否B,第二反之亦然):
SELECT a.id FROM a LEFT JOIN b ON a.id = b.id WHERE b.id IS NULL
SELECT b.id FROM b LEFT JOIN a ON b.id = a.id WHERE a.id IS NULL
1
SELECT DISTINCT id FROM a WHERE NOT EXISTS (SELECT * FROM b WHERE a.id = b.id);
SELECT DISTINCT id FROM b WHERE NOT EXISTS (SELECT * FROM a WHERE a.id = b.id);
7
无论答案公布到目前为止(来自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)
用null:
(A.Name = B.Name OR (A.Name IS NULL AND B.Name IS NULL))
一个理由回避空值时,您可以。
相关问题
- 1. 如何计算列表中的数字之间的差异?
- 2. Mysql:如何计算两个avg之间的差异?
- 3. 如何计算日期间隔中两行之间的差异?
- 4. 如何计算PERL中2个时间戳之间的差异
- 5. 计算两次python之间的差异
- 6. 计算图像之间的差异
- 7. 计算日期之间的差异 - Postgres
- 8. 计算小时之间的差异
- 9. 计算不同列和行之间的时间差异[MYSQL]
- 10. 计算MySQL中两个日期条目之间的差异
- 11. 如何计算来自mysql中同一行的值之间的差异
- 12. 如何odoo计算时间之间的差异
- 13. JScript:如何计算两个日期时间之间的差异?
- 14. 如何计算ms中两个DateTime之间的差异?
- 15. 如何计算R中日期之间的差异
- 16. 如何计算Objective-C中两个日期之间的差异?
- 17. 如何计算python中各组数字之间的差异?
- 18. 如何计算Javascript中两个字符串之间的差异?
- 19. Mysql - 计算两个不同表中的两列之间的差异并插入
- 20. 如何计算两个日期之间的时间差? - MySql
- 21. 如何计算两个日期之间的时间差 - MySql
- 22. 如何计算直方图的连续行之间的差异?
- 23. 行之间的Mysql差异
- 24. 计算两张表之间的差距
- 25. 如何计算两次之间的差异
- 26. 如何计算属性和百分位数之间的差异?
- 27. 如何使用Node.js计算两个日期之间的差异?
- 28. 如何计算两个Java java.sql.Timestamps之间的差异?
- 29. 如何计算二进制字段之间的差异?
- 30. 如何计算两个日期之间的差异?