首页 > 解决方案 > 如何从同一查询中的字段引用的另一个数据库中选择列值?

问题描述

假设我的数据库中有一个名为“中央”的表:

ID 姓名 D B 顾客
1 鲍勃 A1 1
2 马利 无效的 无效的
3 艾琳 A2 2

客户列引用另一个数据库中的“客户”表。

重要提示:数据库名称 A1 和 A2 只是示例。将有数百个单独的数据库包含一个客户表。central.DB 列是从以下示例数据库下方的 select 语句中选择 CustomerName 时要使用的数据库的引用。

来自数据库“A1”内的客户表的示例:

ID 顾客 顾客姓名
1 C001 阿斯塔住房
2 C002 杰克的

来自数据库“A2”内的客户表的示例:

ID 顾客 顾客姓名
1 D900 莫氏
2 D901 汉普莱斯涂料

我不知道如何做这样的事情,也许根本不可能:

SELECT Central.id, Central.Name, (central.DB).Customers.CustomerName 
FROM central, (central.DB).Customers. 

或者也许使用连接来做到这一点?

无论哪种方式,查询结果都应该是:

ID 姓名 顾客姓名
1 鲍勃 阿斯塔住房
2 马利 无效的
3 艾琳 汉普莱斯涂料

也许这是不可能的,结果是我必须用 php 来做?但我不想这样做,因为 central.DB 可能会引用数百个数据库,这可能会相当昂贵(对引用数据库的大量调用)。

(我无法更改使用中央数据库和其他单独数据库的设置)

当该数据库的名称在结果集中时,是否可以引用另一个数据库(表)?

标签: mysqlreference

解决方案


如果两个数据库位于同一服务器(MySQL 实例)上,则只需在表前加上数据库名称即可。

SELECT C.id, C.Name, CU.CustomerName FROM database_1.Central AS C LEFT JOIN database_2.Customers AS CU

确保登录的用户有权访问这两个数据库。


推荐阅读