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
最后两个rows
即5
和6
分别属于child_a
和child_n
。
要在 Parent
table 中获取值,请在 FROM
子句中使用 ONLY
。即:
SELECT * 来自 <b>ONLY</b> PARENT WHERE 值 <10
Value
-----
0
1
2
3
4
我有主要的 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 子句
中使用 ONLYSELECT 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 中获取值,请在 FROM
子句中使用 ONLY
。即:
SELECT * 来自 <b>ONLY</b> PARENT WHERE 值 <10
Value
-----
0
1
2
3
4