mysql - sql 找出2个数据库的差异表名
问题描述
同一个数据库,本地51张表和远程49张表,有差异数据表。如何通过一条SQL来快速找出这些表的名字。
SQL:
USE performance_schema;SELECT t1.OBJECT_SCHEMA,t1.OBJECT_NAME,t2.OBJECT_SCHEMA,t2.OBJECT_NAMEFROM `table_io_waits_summary_by_table` t1 RIGHT JOIN `table_io_waits_summary_by_table` t2 ON t1.OBJECT_NAME = t2.OBJECT_NAMEWHERE t1.OBJECT_SCHEMA=’db1_local’ AND t2.OBJECT_SCHEMA=’db2_remote’;
结果集只有49张,无法罗列出差异的表明。使用了 LEFT OUTER JOIN 还是一样。
验证是存在差异的:
SELECT OBJECT_NAMEFROM table_io_waits_summary_by_table WHERE OBJECT_SCHEMA=’db1_local’ AND OBJECT_NAME NOT IN (SELECT OBJECT_NAME FROM table_io_waits_summary_by_table WHERE OBJECT_SCHEMA=’db2_remote’ )
问题解答
回答1:试试这个:
USE performance_schema;SELECT t1.*FROM `table_io_waits_summary_by_table` t1 LEFT JOIN `table_io_waits_summary_by_table` t2 ON t1.OBJECT_NAME = t2.OBJECT_NAME AND t2.OBJECT_SCHEMA=’db2_remote’WHERE t1.OBJECT_SCHEMA=’db1_local’ AND t2.OBJECT_NAME IS NULL;
其实你的第一个SQL只要将对t2的限制提到连接条件中就行了,将t2.OBJECT_SCHEMA=’db2_remote’写在where条件里面RIGHT JOIN就变成了INNER JOIN ~
相关文章:
1. mysql - 我用SQL语句 更新 行的时候,发现全部 中文都被清空了,请问怎么解决?2. javascript - ES5的闭包用ES6怎么实现3. mysql中的join on查询语句的on能否改为where4. javascript - 小米浏览器中,图片导致fixed定位的元素无法显示5. 关于Java引用传递的一个困惑?6. update方法不能更新字段值为0的数据7. javascript - 为什么!function foo(){}返回false,!function foo(){}()返回true?8. word-wrap该如何使用?9. html - 特殊样式按钮 点击按下去要有凹下和弹起的效果10. java - yuicompressor-maven-plugin 合并可用却不压缩, 哪配置不对?
