Объединение таблиц в двух разных базах данных?

124

В MySQL, у меня есть две разные базы данных - вызов ДАВАЙТЕ их A и B .

Можно ли выполнить соединение между таблицей, которая находится в базе данных A , с таблицей, которая находится в базе данных B ?

user3262424
источник

Ответы:

155

Да, если у учетной записи есть соответствующие разрешения, которые вы можете использовать:

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

Вам просто нужно добавить к ссылке на таблицу имя базы данных, в которой она находится.

OMG Пони
источник
4
А как насчет двух баз данных с разных серверов? (например, одна база данных на сервере облачной службы и одна база данных на вашем собственном сервере)
Юваль А.
1
Можно ли присоединиться к разным БД, DB1 = mysql & DB2 = PostgreSQL). У обоих есть несколько общих таблиц.
MAX
1
@ YuvalA. @ Boatcoder я не думаю, что yuval спрашивает о производительности. просто спрашиваю, как сделать межсерверное соединение. было бы довольно сложно, поскольку вам нужно попросить клиента установить два соединения.
Jayen
убедитесь, что имя базы данных НЕ находится внутри тех же обратных кавычек, что и имя таблицы, иначе вы получитеERROR 1146 (42S02): Table 'currentdb.otherdb.tablename' doesn't exist
Джефф
Спасибо. он также работал со мной без псевдонимовFROM A.table1 JOIN B.table2 ON B.table2 .column2 = A.table1.column1
Бухгалтер
2
SELECT *
FROM A.tableA JOIN B.tableB 

или

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;

Просто убедитесь, что в строке SELECT вы указываете, какие столбцы таблицы вы используете, либо по полной ссылке, либо по псевдониму. Подойдет любое из следующего:

SELECT *
SELECT t1.*,t2.column2
SELECT A.table1.column1, t2.*
etc.
Ноэль Свонсон
источник