Zwischen Tabellen in zwei verschiedenen Datenbanken verbinden?


123

In MySQL, ich habe zwei verschiedene Datenbanken - nennen wir sie A und B .

Ist es möglich, einen Join zwischen einer Tabelle in Datenbank A und einer Tabelle in Datenbank B durchzuführen ?

Antworten:


154

Ja, vorausgesetzt, das Konto verfügt über die entsprechenden Berechtigungen, die Sie verwenden können:

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

Sie müssen der Tabellenreferenz lediglich den Namen der Datenbank voranstellen, in der sie sich befindet.


4
Was ist mit zwei Datenbanken von verschiedenen Servern? (Zum Beispiel eine Datenbank auf einem Cloud-Service-Server und eine Datenbank auf Ihrem eigenen Server)
Yuval A.

1
Ist es möglich, sich verschiedenen DBs anzuschließen (DB1 = mysql & DB2 = PostgreSQL)? Beide haben nur wenige gemeinsame Tabellen.
MAX

1
@ YuvalA. @ Boatcoder Ich glaube nicht, dass Yuval nach Leistung fragt. Fragen Sie einfach, wie Sie einen serverübergreifenden Join durchführen. Dies wäre ziemlich schwierig, da Sie den Client bitten müssen, zwei Verbindungen herzustellen.
Jayen

Stellen Sie sicher, dass sich der Datenbankname NICHT innerhalb der gleichen Backticks wie der Tabellenname befindet, sonst erhalten SieERROR 1146 (42S02): Table 'currentdb.otherdb.tablename' doesn't exist
Jeff

Vielen Dank. es funktionierte auch mit mir ohne AliasnamenFROM A.table1 JOIN B.table2 ON B.table2 .column2 = A.table1.column1
Buchhalter م


2
SELECT *
FROM A.tableA JOIN B.tableB 

oder

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;

Stellen Sie einfach sicher, dass Sie in der Zeile SELECT angeben, welche Tabellenspalten Sie verwenden, entweder als vollständige Referenz oder als Alias. Folgendes funktioniert:

SELECT *
SELECT t1.*,t2.column2
SELECT A.table1.column1, t2.*
etc.
Durch die Nutzung unserer Website bestätigen Sie, dass Sie unsere Cookie-Richtlinie und Datenschutzrichtlinie gelesen und verstanden haben.
Licensed under cc by-sa 3.0 with attribution required.