2010-05-16 118 views
2

我有2个相同的数据库。 abc15和abc18。但其中一个数据库有一个额外的表,我需要找到它。我认为下面的查询应该返回它,但是它没有显示我期望的记录。比较2数据库

select * from information_schema.tables as a 
    left join information_schema.tables as b 
     on a.TABLE_SCHEMA=b.TABLE_SCHEMA AND a.TABLE_NAME=b.TABLE_NAME 
    where a.TABLE_SCHEMA = 'abc15' AND b.TABLE_SCHEMA='abc18' and 
     b.TABLE_NAME IS NULL 
+1

您的查询,只是要检查一个方向,会发生什么当新的“表”是在“B”数据库?切换到外部联接。 – Zachary 2010-05-16 05:16:47

回答

1
$ mysqldumpslow --database abc15 >/tmp/a 
$ mysqldumpslow --database abc18 >/tmp/b 
$ diff /tmp/a /tmp/b 
3

如果数据库b有额外的表?尝试使用全外连接和一个额外的约束末(OR a.TABLE_NAME IS NULL)