Postgres 10.5:创建列数据可能为 empty/null 的物化视图?
Postgres 10.5: Create Materialized View where column data may be empty/null?
我正在从两个表创建实体化视图,使用 array_agg
函数连接从 table_b
到 table_a
的字符串。本质上,table_a
上的 column_c
是一个可以为空的数字数组,对应于 table_b
的 id
列(只有两列,id
和 description
).但是,实体化视图无法包含 table_a
上任何行的行,该行在 column_c
上为空/空。
是否可以使实体化要么(1)输入一个空数组;或 (2) 空值,当 table_a
column_c
值为空时?
CREATE MATERIALIZED VIEW my_materialized_view
AS
SELECT
id,
column_a,
column_b,
array_agg(description) as column_c
FROM table_a
JOIN table_b on table_b.id = any(column_c)
GROUP BY table_a.id
ORDER BY table_a.id ASC
WITH DATA;
使用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;
我正在从两个表创建实体化视图,使用 array_agg
函数连接从 table_b
到 table_a
的字符串。本质上,table_a
上的 column_c
是一个可以为空的数字数组,对应于 table_b
的 id
列(只有两列,id
和 description
).但是,实体化视图无法包含 table_a
上任何行的行,该行在 column_c
上为空/空。
是否可以使实体化要么(1)输入一个空数组;或 (2) 空值,当 table_a
column_c
值为空时?
CREATE MATERIALIZED VIEW my_materialized_view
AS
SELECT
id,
column_a,
column_b,
array_agg(description) as column_c
FROM table_a
JOIN table_b on table_b.id = any(column_c)
GROUP BY table_a.id
ORDER BY table_a.id ASC
WITH DATA;
使用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;