如何联合不同PostgeSQL数据库中的两个表



我在Docker容器中运行PostgreSQL 11.8。我有两个数据库:website_dbtestdb

website_db有一个产品表,包含idproduct_namecolourproduct_size

testdb有一个表,称为具有idusernamepassword的用户

我正在使用website_db,并且我希望testdb数据库中users表中的UNION列。我可以在MySQL中使用它,但在Postgres上很吃力。这是我的尝试:

SELECT * FROM products WHERE product_name = 'doesntexist' OR 1=1 UNION SELECT null,username,password,null FROM testdb.users;

我得到这个错误回来:

ERROR:  relation "testdb.users" does not exist
LINE 1: ...1=1 UNION SELECT null,username,password,null FROM testdb.use...

有人知道我必须做些什么来修复我的查询吗?

您可以使用dblink:

create database first;
create database second;
c first;
create table products
(
id serial not null
constraint products_pk
primary key,
product_name varchar(50) not null
);

INSERT INTO public.products (id, product_name) VALUES (1, 'first_db');
c second;
create table products
(
id serial not null
constraint products_pk
primary key,
product_name varchar(50) not null
);

INSERT INTO public.products (id, product_name) VALUES (1, 'sec_db');
-- dblink -- executes a query in a remote database 
create extension dblink;
-- change queries and creds
SELECT id, product_name FROM products
UNION ALL
SELECT * FROM dblink('dbname=first user=root password=root', 'SELECT id, product_name FROM products') AS tb2(id int, product_name text);

相关内容

  • 没有找到相关文章

最新更新