Nối giữa các bảng trong hai cơ sở dữ liệu khác nhau?


124

Trong MySQL, tôi có hai cơ sở dữ liệu khác nhau - hãy gọi chúng là AB .

Có thể thực hiện phép nối giữa một bảng trong cơ sở dữ liệu A không với bảng trong cơ sở dữ liệu B không?

Câu trả lời:


155

Có, giả sử tài khoản có các quyền thích hợp, bạn có thể sử dụng:

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

Bạn chỉ cần thêm tiền tố tham chiếu bảng với tên của cơ sở dữ liệu mà nó nằm trong đó.


4
Điều gì về hai cơ sở dữ liệu từ các máy chủ khác nhau? (ví dụ: một db trên máy chủ dịch vụ đám mây và trên db trên máy chủ của riêng bạn)
Yuval A.

1
Có thể tham gia vào các DB khác nhau không, DB1 = mysql & DB2 = PostgreSQL). Cả hai đều có ít bảng chung.
TỐI ĐA

1
@ YuvalA. @ Boatcoder. Tôi không nghĩ yuval đang hỏi về hiệu suất. chỉ cần hỏi về cách thực hiện tham gia nhiều máy chủ. sẽ khá khó khăn vì bạn cần yêu cầu khách hàng tạo hai kết nối.
Jayen

đảm bảo rằng tên cơ sở dữ liệu KHÔNG nằm bên trong cùng dấu gạch ngược với tên bảng nếu không bạn sẽ nhận đượcERROR 1146 (42S02): Table 'currentdb.otherdb.tablename' doesn't exist
Jeff

Cảm ơn. nó cũng hoạt động với tôi mà không có tên bí danhFROM A.table1 JOIN B.table2 ON B.table2 .column2 = A.table1.column1
Kế toán م


2
SELECT *
FROM A.tableA JOIN B.tableB 

hoặc là

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;

Chỉ cần đảm bảo rằng trong dòng CHỌN, bạn chỉ định cột bảng nào bạn đang sử dụng, bằng tham chiếu đầy đủ hoặc bằng bí danh. Bất kỳ cách nào sau đây sẽ hoạt động:

SELECT *
SELECT t1.*,t2.column2
SELECT A.table1.column1, t2.*
etc.
Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.