我想根据另一个表中的数据计算计算列。
示例:
ALTER TABLE table1
ADD avg_price DOUBLE AS (SELECT AVG(price)
FROM goods
WHERE id = ?);
?
- 对于计算行
table1.id
table1
中的列?goods
表添加或删除此ID的数据时更新id的值编辑:抱歉,不是Postgres - H2
答案 0 :(得分:1)
一种方法是使用视图:
CREATE VIEW v_table1
AS
SELECT *
FROM table1 t1,
LATERAL (SELECT AVG(price) AS avg_price
FROM goods g
WHERE g.id = t1.id) v1;
同样将价格存储为DOUBLE
并不是最好的选择。更好地使用DECIMAL
。来自Floating-Point Types
如果您需要精确的存储和计算(例如货币金额),请改用数字类型。