我正在使用array_agg
函数从两个表创建一个物化视图,以将字符串从table_b
连接到table_a
。本质上,column_c
上的table_a
是可为空的数字数组,对应于id
的{{1}}列(该列只有table_b
和{{1 }})。但是,实例化视图无法为id
上的任何行都为空的行包含一行description
。
是否可以使实现(1)输入一个空数组;或(2)当table_a
column_c
值为空时为空值?
table_a
答案 0 :(得分:1)
使用LEFT JOIN
:
CREATE MATERIALIZED VIEW my_materialized_view
AS
SELECT
id,
column_a,
column_b,
array_agg(description) as column_c
-- or
-- coalesce(array_agg(description), '{}') as column_c
FROM table_a
LEFT JOIN table_b on table_b.id = any(column_c)
GROUP BY table_a.id
ORDER BY table_a.id ASC
WITH DATA;