我在Docker容器中运行PostgreSQL 11.8。我有两个数据库:website_db
和testdb
。
website_db
有一个产品表,包含id
、product_name
、colour
、product_size
列
testdb
有一个表,称为具有id
、username
、password
的用户
我正在使用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);