MySQL不同服務器上的兩個表進行關聯

一、首先不在一個服務器上的兩個表無法直接關聯

舉例:
情景描述:

數據庫A 中有一張 point_log 表,表中 member_id 爲 用戶id,數據庫A 在 a服務器 中;
數據庫B 中有一張 member 表,表中 member_id 爲 用戶id,數據庫B 在 b服務器 中;
需要關聯point_log表和member表,找出每個用戶的point記錄

結論:

兩張表無法直接使用 leftjoin

二、曲線救國

  1. MySQL映射表
federated引擎
  1. 查看服務器安裝的MySQL是否安裝了federated引擎
show engines;

在這裏插入圖片描述
如上圖所示: FEDERATED 爲 NO,表示安裝了該引擎,但是沒有啓動

三、啓動FEDERATED 引擎

  1. 修改MySQL的配置文件–這裏以window系統爲例
    說明: 本地環境使用PHPstudy搭建
    在這裏插入圖片描述

  2. 修改my.ini文件
    在這裏插入圖片描述

  3. 查找自己的my.ini文件
    在這裏插入圖片描述找到mysql的數據存放路徑,會找到相應的my.ini文件

  4. 重啓mysql

四、建立映射表

  1. 在point_log所在的服務器中新建數據庫,爲了不污染原有的數據
CREATE DATABASE test;
  1. 在新建的數據庫中創建member表的映射
CREATE TABLE `member` (
  `member_id` varchar(22) NOT NULL,
) ENGINE=FEDERATED    
CONNECTION='mysql://root:pwd@member表的服務器地址:3306/bdname/member';

五、使用關聯查詢

  1. 關聯查詢和平時一樣,只不過是在member表前加上了表的數據庫名
SELECT * FROM `point_log` LEFT JOIN `test`.`member` ON `test`.`member`.`member_id` = `point_log`.`member_id`;
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章