postgresql - 在 PostgreSQL 表继承中选择

标签 postgresql inheritance partitioning

我有主表 product,它有基于 store_id 字段的子表 product_store_1, ..., product_store_N。产品表有规则,它们根据 store_id 向子表之一插入新行。它似乎工作正常,但主表当前不为空,我想知道错过了哪个规则。我正在努力

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

但它对所有 product_store_N 表运行,我只想对父表运行此查询。

最佳答案

您需要在 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

最后两个rows那是56属于child_achild_n分别。

获取 Parent 中的值餐 table 使用 ONLYFROM条款。即:

SELECT * FROM <b>ONLY</b> PARENT WHERE value <10

   Value
   -----
    0
    1
    2
    3
    4

sqlfiddle-demo

关于postgresql - 在 PostgreSQL 表继承中选择,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27775689/

相关文章:

ruby-on-rails - Activerecord:在表中查找第 n 行

java - 从实例化基类创建子类?

hadoop - 如何删除 Hive 中每个节点的分区限制?

mysql - 如何在该表上使用 mysql 分区?

Mysql 'Partitioning' vs 拆分数据到不同的表

mysql - 托管在 Heroku 上的 Rails 应用程序的地理空间和全文搜索

Postgresql 和 Vault。错误 : permission denied for relation example

postgresql - 在 Postgresql 中使用表重命名交换表内容时会出现什么问题?

VB.NET 强制继承多代

java - 类名 + $ 。是什么原因造成的?