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


123

在MySQL中,我有两个不同的数据库-我们姑且称之为一个

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

Answers:


154

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

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

您只需要在表引用前面加上它所驻留的数据库的名称即可。


4
来自不同服务器的两个数据库呢?(例如,一个云服务服务器上的一个数据库,以及您自己服务器上的一个数据库)
Yuval A. 2015年

1
是否可以加入不同的数据库,DB1 = mysql&DB2 = PostgreSQL)。两者都有很少的公用表。
MAX

1
@ YuvalA。@ boatcoder我不认为yuval在询问性能。只是询问如何进行跨服务器联接。这将非常困难,因为您需要要求客户端建立两个连接。
Jayen

确保数据库名称与表名称不在同一反引号内,否则您将得到ERROR 1146 (42S02): Table 'currentdb.otherdb.tablename' doesn't exist
Jeff

谢谢。它也与我合作时没有别名FROM A.table1 JOIN B.table2 ON B.table2 .column2 = A.table1.column1
会计م17年


2
SELECT *
FROM A.tableA JOIN B.tableB 

要么

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

0
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.
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.