Unire le tabelle in due database diversi?


124

In MySQL, ho due differenti basi di dati - la chiamata di lasciarli A e B .

È possibile eseguire un join tra una tabella che si trova nel database A e una tabella che si trova nel database B ?

Risposte:


155

Sì, supponendo che l'account disponga delle autorizzazioni appropriate, puoi utilizzare:

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

Hai solo bisogno di anteporre il riferimento alla tabella con il nome del database in cui risiede.


4
Che dire di due database da server diversi? (ad esempio, un db su un server del servizio cloud e su un db sul tuo server)
Yuval A.

1
È possibile unirsi a diversi DB, DB1 = mysql e DB2 = PostgreSQL). Entrambi hanno poche tabelle comuni.
MAX

1
@ YuvalA. @ Boatcoder non credo che Yuval stia chiedendo informazioni sulle prestazioni. chiedendo semplicemente come eseguire un join tra server. sarebbe abbastanza difficile poiché è necessario chiedere al client di effettuare due collegamenti.
Jayen

assicurati che il nome del database NON sia all'interno degli stessi backtick del nome della tabella altrimenti otterraiERROR 1146 (42S02): Table 'currentdb.otherdb.tablename' doesn't exist
Jeff

Grazie. ha funzionato anche con me senza nomi aliasFROM A.table1 JOIN B.table2 ON B.table2 .column2 = A.table1.column1
Accountant م


2
SELECT *
FROM A.tableA JOIN B.tableB 

o

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;

Assicurati solo di specificare nella riga SELECT quali colonne della tabella stai utilizzando, per riferimento completo o per alias. Uno dei seguenti funzionerà:

SELECT *
SELECT t1.*,t2.column2
SELECT A.table1.column1, t2.*
etc.
Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.