1. 程式人生 > 實用技巧 >2020-07-07:mysql如何實現跨庫join查詢?

2020-07-07:mysql如何實現跨庫join查詢?

福哥答案2020-07-07:

1.同服務跨庫。表名稱帶上庫名。
SELECT * FROM 資料庫名稱1.表名稱 JOIN 資料庫名稱2.表名稱 ON 資料庫名稱1.表名稱.tid = 資料庫名稱2.表名稱.tid

2.不同服務跨庫。使用federated引擎。
在機器A上的資料庫A中建一個表B。
建表語句示例:CREATE TABLEtable_name(......) ENGINE =FEDERATED CONNECTION='mysql://[username]:[password]@[location]:[port]/[db-name]/[table-name]'

如果有FEDERATED引擎,但Support是NO,說明你的mysql安裝了這個引擎,但沒啟用,去my.cnf檔案末新增一行 federated ,重啟mysql即可;

如果壓根就沒有FEDERATED這一行,說明你的mysql就沒有安裝這個引擎,這就不能愉快的玩耍了,最好去找你們家運維搞定吧,因為接下來的動作比較大,而且我也不知道怎麼搞;

解釋:通過FEDERATED引擎建立的表只是在本地有表定義檔案,資料檔案則存在於遠端資料庫中,通過這個引擎可以實現類似Oracle 下DBLINK的遠端資料訪問功能。就是說,這種建表方式只會在資料庫A中建立一個表B的表結構檔案,表的索引、資料等檔案還是在機器B上的資料庫B中,相當於只是在資料庫A中建立了表B的一個快捷方式。

需要注意的幾點:
①. 本地的表結構必須與遠端的完全一樣;
②.遠端資料庫目前僅限MySQL;
③.不支援事務;

④.不支援表結構修改。