เข้าร่วมระหว่างตารางในสองฐานข้อมูลที่แตกต่างกัน?


124

ใน MySQL, ฉันมีสองฐานข้อมูลที่แตกต่างกัน - ขอเรียกพวกเขาและB

เป็นไปได้หรือไม่ที่จะทำการรวมระหว่างตารางที่อยู่ในฐานข้อมูลAกับตารางที่อยู่ในฐานข้อมูลB ?

คำตอบ:


155

ใช่สมมติว่าบัญชีมีสิทธิ์ที่เหมาะสมคุณสามารถใช้ได้:

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

คุณเพียงแค่ต้องนำหน้าการอ้างอิงตารางด้วยชื่อของฐานข้อมูลที่อยู่


4
แล้วฐานข้อมูลสองฐานข้อมูลจากเซิร์ฟเวอร์ต่างกันล่ะ? (ตัวอย่างเช่นหนึ่งฐานข้อมูลบนเซิร์ฟเวอร์บริการคลาวด์และบนฐานข้อมูลบนเซิร์ฟเวอร์ของคุณเอง)
Yuval A.

1
เป็นไปได้หรือไม่ที่จะเข้าร่วมกับ DB ต่าง ๆ , DB1 = mysql & DB2 = PostgreSQL) ทั้งสองมีโต๊ะทั่วไปไม่กี่โต๊ะ
สูงสุด

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
Accountant م



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.
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.