我想创建一个自动生成的列,该列取决于来自另一个表 (table2) 的查询。
xid | status | time
-----------------------
1 2 2021-03-03 04:00:00
2 0 2021-02-27 13:00:00
1 2 2021-03-02 23:00:00
1 1 2021-03-01 01:00:00
从 table2,我想在 table1 中自动生成以下列“计算”
id | calculated
-----------------------
1 2
2 0
如果我把它写成一个查询,它看起来如下
SELECT
id
, COUNT(*)
FROM
table2
WHERE
status=2 AND time < CURRENT_TIMESTAMP
GROUP BY
id;
除了我希望在 table1 中自动生成这个计数的数字。这可能吗?
我打算使用 GENERATE ALWAYS AS () STORED,但从阅读文档来看,这似乎只适用于同一表中列中的值?如果是这样,有没有人知道处理这个问题的不同方法?
答案 0 :(得分:0)
听起来您真正想要的是materialized view:
create materialized view mv_table2_summary as
SELECT id, COUNT(*)
FROM table2
WHERE status = 2 AND time < CURRENT_TIMESTAMP
GROUP BY id;
您可以安排作业定期更新。