在两个不同数据库中的表之间连接?

Posted

技术标签:

【中文标题】在两个不同数据库中的表之间连接?【英文标题】:Join between tables in two different databases? 【发布时间】:2011-08-07 14:08:56 【问题描述】:

mysql 中,我有两个不同的数据库 -- 我们称它们为 AB

是否可以在数据库 A 中的表与数据库 B 中的表之间执行连接?

【问题讨论】:

【参考方案1】:

是的,假设该帐户具有您可以使用的适当权限:

SELECT <...>
FROM A.table1 t1 JOIN B.table2 t2 ON t2.column2 = t1.column1;

您只需在表引用前加上它所在的数据库的名称。

【讨论】:

来自不同服务器的两个数据库呢? (例如云服务服务器上一个db,自己服务器上一个db) 是否可以加入不同的数据库,DB1 = mysql & DB2 = PostgreSQL) 。两者都有很少的公共表。 @YuvalA.@boatcoder 我不认为 yuval 是在询问性能。只是询问如何进行跨服务器加入。会很困难,因为你需要让客户端建立两个连接。 确保数据库名称与表名不在同一个反引号内,否则您将得到ERROR 1146 (42S02): Table 'currentdb.otherdb.tablename' doesn't exist 谢谢。它也适用于没有别名的我FROM A.table1 JOIN B.table2 ON B.table2 .column2 = A.table1.column1【参考方案2】:
SELECT <...> 
FROM A.tableA JOIN B.tableB 

【讨论】:

【参考方案3】:
SELECT *
FROM A.tableA JOIN B.tableB 

SELECT *
  FROM A.tableA JOIN B.tableB
  ON A.tableA.id = B.tableB.a_id;

【讨论】:

【参考方案4】:
SELECT <...>
FROM A.table1 t1 JOIN B.table2 t2 ON t2.column2 = t1.column1;

只需确保在 SELECT 行中指定要使用的表列,通过完整引用或别名。以下任何一项都可以:

SELECT *
SELECT t1.*,t2.column2
SELECT A.table1.column1, t2.*
etc.

【讨论】:

以上是关于在两个不同数据库中的表之间连接?的主要内容,如果未能解决你的问题,请参考以下文章

MariaDB 根据列值连接来自不同数据库的表

连接查询

MySQL8:连接查询

我可以在视图中查询数据库中的表(仅当它存在时)?

是否可以在同一集群中的两个不同 AWS Redshift 数据库之间运行连接?

查询 - 数据集中的全外连接2个不同的表 - LINQ C#