与MySQL中不同数据库中的另一个表相比,如何从表中获取缺失的行?

时间:2017-06-14 16:37:43

标签: mysql

我有两个超过20万行的表,除了一行比另一行多3行外,它们应该是相同的。我想弄清楚它们是哪条线。每个表都在不同的数据库中。我怎么能在MySQL中这样做?

我试过了:

SELECT t1.* 
FROM db1.tb1 t1 
LEFT JOIN db2.tb2 ON tb1.col_13 = tb2.col_13 
WHERE tb2.col_13 IS NULL;

但这是永远的。

修改

由于col_13都是重复的,所以这不起作用。 问题是我无法在表之间找到一个commen主键,它们之间的主键是datetime,它几乎相同,但由于用于将数据插入每个表的不同脚本,一些行具有不同的秒,因为四舍五入,例如:" 2015-09-01 00:00:11"和" 2015-09-01 00:00:12"是相同的行,但由于四舍五入,它们有不同的秒数。

2 个答案:

答案 0 :(得分:1)

伊斯顿的评论是正确的。您正在正确执行查询。您的问题不是加入两个数据库,而是查询性能。要解决该问题,需要有关表结构的更多详细信息。他的建议是很好的起点,即确保并在两个数据库中唯一且索引的列上进行连接。这将允许查询尽快执行。

如果你自己无法轻易解决问题,最好不要再问一个新问题,而这次关注表格结构的更多详细信息。

答案 1 :(得分:1)

这应该只需要一两秒钟,因为您的查询看起来很开启,因此您可能需要将索引添加到col_13。如果这只运行一次或两次,你可能不需要它,但如果它经常运行,我会添加索引。