mysql - sql 找出2個數(shù)據(jù)庫的差異表名
問題描述
同一個數(shù)據(jù)庫,本地51張表和遠程49張表,有差異數(shù)據(jù)表。如何通過一條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’;
結(jié)果集只有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 - 分庫分表、分區(qū)、讀寫分離 這些都是用在什么場景下 ,會帶來哪些效率或者其他方面的好處2. css - 移動端 oppo 手機之 Border-radius3. 爬蟲圖片 - 關于Python 爬蟲的問題4. 人工智能 - python 機器學習 醫(yī)療數(shù)據(jù) 怎么學5. 如何修改phpstudy的phpmyadmin放到其他地方6. javascript - vue-echarts-v3使用的過程中折線圖區(qū)域呈漸變色。7. python 計算兩個時間相差的分鐘數(shù),超過一天時計算不對8. 索引 - 請教下Mysql大數(shù)據(jù)量的聯(lián)合查詢9. pip安裝提示Twisted錯誤問題(Python3.6.4安裝Twisted錯誤)10. 關于Mysql聯(lián)合查詢
