ChatGPT解决这个技术问题 Extra ChatGPT

Join between tables in two different databases?

In MySQL, I have two different databases -- let's call them A and B.

Is it possible to perform a join between a table that is in database A, to a table that is in database B?


p
potashin

Yes, assuming the account has appropriate permissions you can use:

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

You just need to prefix the table reference with the name of the database it resides in.


What about two databases from different servers? (for example, one db on a cloud service server, and on db on your own server)
Is it possible to join to different DB's, DB1 = mysql & DB2 = PostgreSQL) . Both have few common tables.
@YuvalA.@boatcoder i don't think yuval is asking about performance. simply asking about how to do a cross-server join. would be quite difficult since you need to ask the client to make two connections.
make sure that the database name is NOT inside the same backticks as the table name otherwise you will get ERROR 1146 (42S02): Table 'currentdb.otherdb.tablename' doesn't exist
Thanks. it also worked with me without alias names FROM A.table1 JOIN B.table2 ON B.table2 .column2 = A.table1.column1
p
potashin
SELECT <...> 
FROM A.tableA JOIN B.tableB 

K
Kalaivani M
SELECT *
FROM A.tableA JOIN B.tableB 

or

SELECT *
  FROM A.tableA JOIN B.tableB
  ON A.tableA.id = B.tableB.a_id;

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

Just make sure that in the SELECT line you specify which table columns you are using, either by full reference, or by alias. Any of the following will work:

SELECT *
SELECT t1.*,t2.column2
SELECT A.table1.column1, t2.*
etc.