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


124

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

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

Ответы:


155

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

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

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


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
Бухгалтер



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.
Используя наш сайт, вы подтверждаете, что прочитали и поняли нашу Политику в отношении файлов cookie и Политику конфиденциальности.
Licensed under cc by-sa 3.0 with attribution required.