我有主表 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
那是5
和 6
属于child_a
和 child_n
分别。
获取 Parent
中的值餐 table 使用 ONLY
在 FROM
条款。即:
SELECT * FROM <b>ONLY</b> PARENT WHERE value <10
Value
-----
0
1
2
3
4
关于postgresql - 在 PostgreSQL 表继承中选择,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27775689/