Juntar-se entre tabelas em dois bancos de dados diferentes?


123

No MySQL, eu tenho dois bancos de dados diferentes - vamos chamá-los de A e B .

É possível executar uma junção entre uma tabela que está no banco de dados A e uma tabela que está no banco de dados B ?

Respostas:


154

Sim, supondo que a conta tenha permissões apropriadas, você pode usar:

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

Você só precisa prefixar a referência da tabela com o nome do banco de dados em que reside.


4
Que tal dois bancos de dados de servidores diferentes? (por exemplo, um db em um servidor de serviço de nuvem, e no db em seu próprio servidor)
Yuval A.

1
É possível ingressar em diferentes bancos de dados, DB1 = mysql e DB2 = PostgreSQL). Ambos têm poucas tabelas comuns.
MAX

1
@ YuvalA. @ Boatcoder Eu não acho que o yuval esteja perguntando sobre desempenho. simplesmente perguntando sobre como fazer uma associação entre servidores. seria bastante difícil, pois você precisa pedir ao cliente para fazer duas conexões.
Jayen

certificar-se de que o nome do banco de dados não está dentro dos mesmos acentos graves como o nome da tabela caso contrário você teráERROR 1146 (42S02): Table 'currentdb.otherdb.tablename' doesn't exist
Jeff

Obrigado. ele também trabalhou comigo sem nomes de aliasFROM A.table1 JOIN B.table2 ON B.table2 .column2 = A.table1.column1
Contador م


2
SELECT *
FROM A.tableA JOIN B.tableB 

ou

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;

Apenas certifique-se de que na linha SELECT você especifique quais colunas da tabela você está usando, por referência completa ou por alias. Qualquer um dos seguintes procedimentos funcionará:

SELECT *
SELECT t1.*,t2.column2
SELECT A.table1.column1, t2.*
etc.
Ao utilizar nosso site, você reconhece que leu e compreendeu nossa Política de Cookies e nossa Política de Privacidade.
Licensed under cc by-sa 3.0 with attribution required.