¿Unirse entre tablas en dos bases de datos diferentes?

123

En MySQL, tengo dos bases de datos diferentes - el llamado de dejarlos A y B .

¿Es posible realizar una unión entre una tabla que está en la base de datos A , a una tabla que está en la base de datos B ?

usuario3262424
fuente

Respuestas:

154

Sí, suponiendo que la cuenta tenga los permisos apropiados que puede usar:

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

Solo necesita anteponer la referencia de la tabla con el nombre de la base de datos en la que reside.

Ponis OMG
fuente
44
¿Qué pasa con dos bases de datos de diferentes servidores? (por ejemplo, una base de datos en un servidor de servicio en la nube, y en base de datos en su propio servidor)
Yuval A.
1
¿Es posible unirse a diferentes DB's, DB1 = mysql y DB2 = PostgreSQL). Ambos tienen pocas tablas comunes.
MAX
1
@ YuvalA. @ Boatcoder No creo que Yuval esté preguntando sobre el rendimiento. simplemente preguntando cómo hacer una unión entre servidores. sería bastante difícil ya que necesita pedirle al cliente que haga dos conexiones.
Jayen
asegúrese de que el nombre de la base de datos NO esté dentro de los mismos backticks que el nombre de la tabla, de lo contrario obtendráERROR 1146 (42S02): Table 'currentdb.otherdb.tablename' doesn't exist
Jeff
Gracias. también funcionó conmigo sin nombres de aliasFROM A.table1 JOIN B.table2 ON B.table2 .column2 = A.table1.column1
Contador م
5
SELECT <...> 
FROM A.tableA JOIN B.tableB 
Senthil
fuente
2
SELECT *
FROM A.tableA JOIN B.tableB 

o

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

Solo asegúrese de que en la línea SELECT especifique qué columnas de la tabla está utilizando, ya sea por referencia completa o por alias. Cualquiera de los siguientes funcionará:

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