Połączyć tabele w dwóch różnych bazach danych?


124

W MySQL, mam dwóch różnych baz danych - połączenie Powiedzmy im A i B .

Czy można wykonać sprzężenie między tabelą znajdującą się w bazie danych A a tabelą znajdującą się w bazie danych B ?

Odpowiedzi:


155

Tak, zakładając, że konto ma odpowiednie uprawnienia, z których możesz korzystać:

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

Wystarczy poprzedzić odwołanie do tabeli nazwą bazy danych, w której się ona znajduje.


4
A co z dwiema bazami danych z różnych serwerów? (na przykład jedna baza danych na serwerze usługi w chmurze i baza danych na własnym serwerze)
Yuval A.

1
Czy można dołączyć do różnych DB, DB1 = mysql & DB2 = PostgreSQL). Obie mają kilka wspólnych tabel.
MAX

1
@ YuvalA. @ Boatcoder Nie sądzę, że Yuval pyta o wydajność. po prostu pytając o to, jak wykonać połączenie między serwerami. byłoby dość trudne, ponieważ musisz poprosić klienta o wykonanie dwóch połączeń.
Jayen

upewnij się, że nazwa bazy danych NIE znajduje się wewnątrz tych samych znaków odwrotnych co nazwa tabeli, w przeciwnym razie otrzymaszERROR 1146 (42S02): Table 'currentdb.otherdb.tablename' doesn't exist
Jeff

Dzięki. działało również ze mną bez pseudonimówFROM A.table1 JOIN B.table2 ON B.table2 .column2 = A.table1.column1
Księgowy م


2
SELECT *
FROM A.tableA JOIN B.tableB 

lub

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;

Po prostu upewnij się, że w linii SELECT określasz, których kolumn tabeli używasz, albo przez pełne odwołanie, albo przez alias. Będzie działać dowolne z poniższych:

SELECT *
SELECT t1.*,t2.column2
SELECT A.table1.column1, t2.*
etc.
Korzystając z naszej strony potwierdzasz, że przeczytałeś(-aś) i rozumiesz nasze zasady używania plików cookie i zasady ochrony prywatności.
Licensed under cc by-sa 3.0 with attribution required.