Select 来自 PostgreSQL 中的两个继承表
Select from two inherited tables in PostgreSQL
假设有一个 PostgreSQL 父 table files
是空的;是 'abstract'。然后有 table 继承自 files
,包含数据:red-files
、green-files
、blue-files
.
我可以通过 select 从 files*
从所有三个中 select,但是我如何从 red-files
和 green-files
中 select ] 只要?
也就是说,如果查询从 red-files
检索 3 行,从 green-files
检索 2 行,那么我要查找的组合查询将显示 5 行。
你可以使用 UNION ALL 除非有一个字段加入它。
CREATE TABLE files (
name text,
size int
);
CREATE TABLE redfiles (
id char(2)
) INHERITS (files);
CREATE TABLE bluefiles (
id char(2)
) INHERITS (files);
insert into redfiles (name, id, size) values ('file1','aa', 1024);
insert into redfiles (name, id, size) values ('file2','bb', 2048);
insert into bluefiles (name, id, size) values ('file3','xx', 1024);
insert into bluefiles (name, id, size) values ('file4','yy', 1526);
select * from files;
name | size
:---- | ---:
file1 | 1024
file2 | 2048
file3 | 1024
file4 | 1526
with MyFiles as
(
select * from redfiles
union all
select * from bluefiles
)
select *
from MyFiles
where size = 1024;
name | size | id
:---- | ---: | :-
file1 | 1024 | aa
file3 | 1024 | xx
dbfiddle here
假设有一个 PostgreSQL 父 table files
是空的;是 'abstract'。然后有 table 继承自 files
,包含数据:red-files
、green-files
、blue-files
.
我可以通过 select 从 files*
从所有三个中 select,但是我如何从 red-files
和 green-files
中 select ] 只要?
也就是说,如果查询从 red-files
检索 3 行,从 green-files
检索 2 行,那么我要查找的组合查询将显示 5 行。
你可以使用 UNION ALL 除非有一个字段加入它。
CREATE TABLE files ( name text, size int ); CREATE TABLE redfiles ( id char(2) ) INHERITS (files); CREATE TABLE bluefiles ( id char(2) ) INHERITS (files);
insert into redfiles (name, id, size) values ('file1','aa', 1024); insert into redfiles (name, id, size) values ('file2','bb', 2048); insert into bluefiles (name, id, size) values ('file3','xx', 1024); insert into bluefiles (name, id, size) values ('file4','yy', 1526);
select * from files;
name | size :---- | ---: file1 | 1024 file2 | 2048 file3 | 1024 file4 | 1526
with MyFiles as ( select * from redfiles union all select * from bluefiles ) select * from MyFiles where size = 1024;
name | size | id :---- | ---: | :- file1 | 1024 | aa file3 | 1024 | xx
dbfiddle here