sql 找出2个数据库的差异表名
同一个数据库,本地51张表和远程49张表,有差异数据表。如何通过一条SQL来快速找出这些表的名字。
SQL:
USE performance_schema;
SELECT
t1.OBJECT_SCHEMA,t1.OBJECT_NAME,
t2.OBJECT_SCHEMA,t2.OBJECT_NAME
FROM `table_io_waits_summary_by_table` t1
RIGHT JOIN `table_io_waits_summary_by_table` t2 ON t1.OBJECT_NAME = t2.OBJECT_NAME
WHERE t1.OBJECT_SCHEMA='db1_local' AND t2.OBJECT_SCHEMA='db2_remote';
结果集只有49张,无法罗列出差异的表明。使用了 LEFT OUTER JOIN
还是一样。
验证是存在差异的:
SELECT OBJECT_NAME
FROM 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'
)
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(1)
试试这个:
其实你的第一个SQL只要将对t2的限制提到连接条件中就行了,将t2.OBJECT_SCHEMA='db2_remote'写在where条件里面RIGHT JOIN就变成了INNER JOIN ~