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 ?

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.


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 م


2
SELECT *
FROM A.tableA JOIN B.tableB 

atau

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;

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.
Dengan menggunakan situs kami, Anda mengakui telah membaca dan memahami Kebijakan Cookie dan Kebijakan Privasi kami.
Licensed under cc by-sa 3.0 with attribution required.