假设有一个空的PostgreSQL父表files
;它的抽象'。然后有一些表继承自files
,其中包含数据:red-files
,green-files
,blue-files
。
我可以从files*
中选择,从全部三个中进行选择,但我如何才能从red-files
和green-files
中进行选择?
也就是说,如果查询将从red-files
检索3行,从green-files
检索2行,则我查找的组合查询将显示5行。
答案 0 :(得分:1)
除非有字段加入,否则您可以使用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