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. javascript - npm下載的模塊不完整是什么問題?2. java - Spring事務回滾問題3. apache - 本地搭建wordpress權限問題4. c++ - 如何在python的阻塞的函數中獲取變量值5. node.js - 我想讓最后進入數據庫的數據,在前臺最先展示,如何做到?6. wordpress - Nginx中禁止訪問txt,robots.txt文件例外,規則該怎么寫?7. 剛放到服務器的項目出現這中錯誤,有高手指點嗎8. python - django 按日歸檔統計訂單求解9. python 操作mysql如何經量防止自己的程序在之后被惡意注入(說白了就是問一下python防注入的一些要點)10. mysql - 面試題:如何把login_log表轉換成last_login表?
