Select 在 PostgreSQL 中 Table 继承

Select In PostgreSQL Table Inheritance

我有主要的 table 产品,它有子tables product_store_1, ... , product_store_N 基于 store_id 字段。产品 table 有规则,它们向子 table 之一插入新行取决于 store_id。它似乎工作正常,但 main table 当前不为空,我想知道错过了哪个规则。我正在尝试

SELECT store_id,count(*) FROM product GROUP BY store_id;

但它对所有 product_store_N table 运行,我只想对父 table.

运行此查询

您需要在 FROM 子句

中使用 ONLY
SELECT store_id,count(*) 
FROM ONLY product 
GROUP BY store_id;

看这个例子:

CREATE TABLE parent (value INT);
CREATE TABLE child_a () INHERITS (parent);
CREATE TABLE child_n() INHERITS (parent);

INSERT INTO parent VALUES (0),(1),(2),(3),(4);
INSERT INTO child_a VALUES (10),(20),(30),(40),(5);
INSERT INTO child_n VALUES (50),(60),(70),(80),(6);

如果我查询 select * from parent where value <10 结果将是

   Value
   -----
    0
    1
    2
    3
    4
    5
    6

最后两个rows56分别属于child_achild_n

要在 Parent table 中获取值,请在 FROM 子句中使用 ONLY。即:

SELECT * 来自 <b>ONLY</b> PARENT WHERE 值 <10

   Value
   -----
    0
    1
    2
    3
    4

sqlfiddle-demo