mysql - sql 找出2個(gè)數(shù)據(jù)庫(kù)的差異表名
問題描述
同一個(gè)數(shù)據(jù)庫(kù),本地51張表和遠(yuǎn)程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 還是一樣。
驗(yàn)證是存在差異的:
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:試試這個(gè):
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;
其實(shí)你的第一個(gè)SQL只要將對(duì)t2的限制提到連接條件中就行了,將t2.OBJECT_SCHEMA=’db2_remote’寫在where條件里面RIGHT JOIN就變成了INNER JOIN ~
相關(guān)文章:
1. mysql - 在不允許改動(dòng)數(shù)據(jù)表的情況下,如何優(yōu)化以varchar格式存儲(chǔ)的時(shí)間的比較?2. java中返回一個(gè)對(duì)象,和輸出對(duì)像的值,意義在哪兒3. MySQL中無法修改字段名的疑問4. docker網(wǎng)絡(luò)端口映射,沒有方便點(diǎn)的操作方法么?5. css3 - 純css實(shí)現(xiàn)點(diǎn)擊特效6. 安全性測(cè)試 - nodejs中如何防m(xù)ySQL注入7. javascript - Img.complete和img.onload判斷圖片加載完成有什么區(qū)別?8. css - 網(wǎng)頁(yè)div區(qū)塊 像蘋果一樣可左右滑動(dòng) 手機(jī)與電腦9. python文檔怎么查看?10. python - pandas dataframe如何對(duì)某列的空數(shù)據(jù)位置進(jìn)行update?update的函數(shù)是自定義的,參數(shù)是同一行的另外兩列數(shù)據(jù)
