Joindre entre des tables dans deux bases de données différentes?

124

En MySQL, j'ai deux bases de données différentes - l'appel de laissez - les A et B .

Est-il possible d'effectuer une jointure entre une table qui se trouve dans la base de données A et une table qui se trouve dans la base de données B ?

user3262424
la source

Réponses:

155

Oui, en supposant que le compte dispose des autorisations appropriées, vous pouvez utiliser:

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

Il vous suffit de préfixer la référence de table avec le nom de la base de données dans laquelle elle réside.

Poneys OMG
la source
4
Qu'en est-il de deux bases de données de serveurs différents? (par exemple, une base de données sur un serveur de service cloud et sur une base de données sur votre propre serveur)
Yuval A.
1
Est-il possible de rejoindre différentes bases de données, DB1 = mysql & DB2 = PostgreSQL). Les deux ont peu de tables communes.
MAX
1
@ YuvalA. @ Boatcoder Je ne pense pas que yuval pose des questions sur les performances. demander simplement comment faire une jointure entre serveurs. serait assez difficile car vous devez demander au client d'établir deux connexions.
Jayen
assurez-vous que le nom de la base de données n'est PAS dans les mêmes backticks que le nom de la table, sinon vous obtiendrezERROR 1146 (42S02): Table 'currentdb.otherdb.tablename' doesn't exist
Jeff
Merci. cela a également fonctionné avec moi sans pseudonymeFROM A.table1 JOIN B.table2 ON B.table2 .column2 = A.table1.column1
Accountant م
5
SELECT <...> 
FROM A.tableA JOIN B.tableB 
Senthil
la source
2
SELECT *
FROM A.tableA JOIN B.tableB 

ou

SELECT *
  FROM A.tableA JOIN B.tableB
  ON A.tableA.id = B.tableB.a_id;
Kalaivani M
la source
0
SELECT <...>
FROM A.table1 t1 JOIN B.table2 t2 ON t2.column2 = t1.column1;

Assurez-vous simplement que dans la ligne SELECT vous spécifiez les colonnes de table que vous utilisez, soit par référence complète, soit par alias. L'un des éléments suivants fonctionnera:

SELECT *
SELECT t1.*,t2.column2
SELECT A.table1.column1, t2.*
etc.
Noel Swanson
la source