Да, это можно сделать, используя dblink
, хотя и с существенными соображениями производительности.
В следующем примере требуется, чтобы у текущего пользователя SQL были разрешения на обе базы данных.Если db2
не находится в том же кластере, вам нужно заменить dbname=db2
на полную строку подключения, определенную в документации dblink .
SELECT *
FROM table1 tb1
LEFT JOIN (
SELECT *
FROM dblink('dbname=db2','SELECT id, code FROM table2')
AS tb2(id int, code text);
) AS tb2 ON tb2.column = tb1.column;
Если table2
очень большой, у вас могут возникнуть проблемы с производительностью, потому что подзапрос загружает весь table2
перед выполнением объединения.