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


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.