Bergabung di antara tabel dalam dua database berbeda?

124

Dalam MySQL, saya memiliki dua database yang berbeda - mari panggilan mereka A dan B .

Apakah mungkin untuk melakukan gabungan antara tabel yang ada di database A , ke tabel yang ada di database B ?

pengguna3262424
sumber

Jawaban:

155

Ya, dengan asumsi akun memiliki izin yang sesuai, Anda dapat menggunakan:

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

Anda hanya perlu memberi awalan referensi tabel dengan nama database tempatnya berada.

OMG Ponies
sumber
4
Bagaimana dengan dua database dari server yang berbeda? (misalnya, satu db di server layanan cloud, dan di db di server Anda sendiri)
Yuval A.
1
Apakah mungkin untuk bergabung ke DB yang berbeda, DB1 = mysql & DB2 = PostgreSQL). Keduanya memiliki beberapa tabel umum.
MAX
1
@ YuvalA. @ Boatcoder saya rasa yuval tidak menanyakan tentang kinerja. hanya menanyakan tentang cara melakukan gabungan lintas-server. akan sangat sulit karena Anda perlu meminta klien untuk membuat dua koneksi.
Jayen
pastikan bahwa nama database TIDAK berada di dalam backticks yang sama dengan nama tabel jika tidak, Anda akan mendapatkannyaERROR 1146 (42S02): Table 'currentdb.otherdb.tablename' doesn't exist
Jeff
Terima kasih. itu juga bekerja dengan saya tanpa nama aliasFROM A.table1 JOIN B.table2 ON B.table2 .column2 = A.table1.column1
Akuntan م
5
SELECT <...> 
FROM A.tableA JOIN B.tableB 
Senthil
sumber
2
SELECT *
FROM A.tableA JOIN B.tableB 

atau

SELECT *
  FROM A.tableA JOIN B.tableB
  ON A.tableA.id = B.tableB.a_id;
Kalaivani M
sumber
0
SELECT <...>
FROM A.table1 t1 JOIN B.table2 t2 ON t2.column2 = t1.column1;

Pastikan bahwa di baris SELECT Anda menentukan kolom tabel mana yang Anda gunakan, baik dengan referensi lengkap, atau dengan alias. Salah satu dari yang berikut ini akan berfungsi:

SELECT *
SELECT t1.*,t2.column2
SELECT A.table1.column1, t2.*
etc.
Noel Swanson
sumber