假设这张桌子是这样的:
a | b | total
--|---|------
1 | 2 | 3
4 | 7 | 11
…
CREATE TEMPORARY TABLE summedup (
a double precision DEFAULT 0
, b double precision DEFAULT 0
--, total double precision
);
INSERT INTO summedup (a, b) VALUES (1, 2);
INSERT INTO summedup (a, b) VALUES (4, 7);
SELECT a, b, a + b as total FROM summedup;
很容易对SELECT上的前两列进行总结。
但是Postgres (9.6)也支持将total
定义为其他两列之和的能力吗?如果是的话:
发布于 2019-04-15 13:12:42
您要查找的内容通常称为“计算列”。
Postgres 9.6不支持这一点(Postgres 12 -将在Q4 2019年-将要中发布)。
如果没有这么简单的总和,我就不会费心存储多余的信息了。
如果不想重复该表达式,请创建一个视图。
发布于 2019-04-15 13:19:25
我认为你想要的是一个视图。
CREATE VIEW table_with_sum AS
SELECT id, a, b, a + b as total FROM summedup;
然后,您可以查询视图中的和。
SELECT total FROM table_with_sum where id=5;
视图不存储每一行的和,每次查询视图时都会计算total
列。如果您的目标是提高查询的效率,这将于事无补。
还有另一种方法:将该列添加到表中,并创建用于更新的触发器,并在每次修改行时插入更新total
列。
https://stackoverflow.com/questions/55689918
复制相似问题