从不同表中计数自动生成的列(基于一组条件)

时间:2021-03-01 21:27:30

标签: sql postgresql

我想创建一个自动生成的列,该列取决于来自另一个表 (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,但从阅读文档来看,这似乎只适用于同一表中列中的值?如果是这样,有没有人知道处理这个问题的不同方法?

1 个答案:

答案 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;

您可以安排作业定期更新。

相关问题