#php #mysql
Вопрос:
В MySQL у меня есть две разные базы данных-давайте назовем их A и B.
Можно ли выполнить соединение между таблицей, находящейся в базе данных A, и таблицей, находящейся в базе данных B?
Ответ №1:
Да, при условии, что у учетной записи есть соответствующие разрешения, которые вы можете использовать:
SELECT lt;...gt; FROM A.table1 t1 JOIN B.table2 t2 ON t2.column2 = t1.column1;
Вам просто нужно добавить в ссылку на таблицу имя базы данных, в которой она находится.
Комментарии:
1. А как насчет двух баз данных с разных серверов? (например, одна база данных на сервере облачных служб и одна база данных на вашем собственном сервере)
2. Можно ли присоединиться к разным базам данных, DB1 = mysql и DB2 = PostgreSQL) . У обоих есть несколько общих таблиц.
3. @YuvalA.@boatcoder я не думаю, что Юваль спрашивает о производительности. просто спрашиваю о том, как выполнить межсерверное соединение. было бы довольно сложно, так как вам нужно попросить клиента установить два соединения.
4. убедитесь, что имя базы данных НЕ находится внутри тех же обратных ссылок, что и имя таблицы, иначе вы получите
ERROR 1146 (42S02): Table 'currentdb.otherdb.tablename' doesn't exist
5. Спасибо. это также работало со мной без псевдонимов
FROM A.table1 JOIN B.table2 ON B.table2 .column2 = A.table1.column1
Ответ №2:
SELECT lt;...gt; FROM A.tableA JOIN B.tableB
Ответ №3:
SELECT * FROM A.tableA JOIN B.tableB
или
SELECT * FROM A.tableA JOIN B.tableB ON A.tableA.id = B.tableB.a_id;
Ответ №4:
SELECT lt;...gt; FROM A.table1 t1 JOIN B.table2 t2 ON t2.column2 = t1.column1;
Просто убедитесь, что в строке ВЫБОРА вы указываете, какие столбцы таблицы вы используете, либо по полной ссылке, либо по псевдониму. Любое из следующих действий будет работать:
SELECT * SELECT t1.*,t2.column2 SELECT A.table1.column1, t2.* etc.