Select 来自 PostgreSQL 中的两个继承表

Select from two inherited tables in PostgreSQL

假设有一个 PostgreSQL 父 table files 是空的;是 'abstract'。然后有 table 继承自 files,包含数据:red-filesgreen-filesblue-files.

我可以通过 select 从 files* 从所有三个中 select,但是我如何从 red-filesgreen-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