ERROR.Column >>?column?<< specified several times: 列>>?列?<<;指定多次。

问题描述 投票:1回答:1

当我执行下面的UNION ALL代码将几个表合并成一个实体化视图时,我得到了错误:列>>?列?<<指定了几次。正如你可以看到上面的代码,我严格地保持了原始表的序列。

    1. 命名
    1. info1 AS hoehe
    1. info1 AS art
    1. info1 AS name_alternative
    1. info2 AS区域
    1. info3 AS text_hoehe
    1. kn AS name_lang
    1. 地域
    1. 符号号码

DROP MATERIALIZED VIEW vt_views.poi_test;

CREATE MATERIALIZED VIEW vt_views.poi_test
TABLESPACE pg_default
AS
 SELECT tim_bergname.name,
 tim_bergname.info1 AS hoehe,
 NULL,
 NULL,
 tim_bergname.info2 AS region,
 NULL,
 NULL,
 tim_bergname.geoloc,
 tim_bergname.symbolnummer
 FROM tim_bergname

UNION ALL

SELECT tim_flurname.name,
 NULL,
 NULL,
 NULL,
 NULL,
 NULL,
 NULL,
 tim_flurname.geoloc,
 tim_flurname.symbolnummer
 FROM tim_flurname

UNION ALL

SELECT tim_haus_huette.name,
 NULL,
 tim_haus_huette.info1 AS art,
 NULL,
 tim_haus_huette.info2 AS region,
 NULL,
 NULL,
 tim_haus_huette.geoloc,
 tim_haus_huette.symbolnummer
 FROM tim_haus_huette

UNION ALL

SELECT tim_museum.name,
 NULL,
 tim_museum.info1 AS art,
 NULL,
 NULL,
 NULL,
 tim_museum.kn AS name_lang,
 tim_museum.geoloc,
 tim_museum.symbolnummer
 FROM tim_museum

UNION ALL

... several other SELECTS (shortened because of stackoverflow restrictions)

UNION ALL

SELECT tim_wohnmobilstellplatz.name,
 NULL,
 NULL,
 NULL,
 NULL,
 NULL,
 NULL,
 tim_wohnmobilstellplatz.geoloc,
 tim_wohnmobilstellplatz.symbolnummer
 FROM tim_wohnmobilstellplatz


WITH DATA;

ALTER TABLE vt_views.poi_test
 OWNER TO postgres;

GRANT ALL ON TABLE vt_views.poi TO postgres;
GRANT ALL ON TABLE vt_views.poi TO PUBLIC;

知道为什么会这样吗?是不是因为例如info1用了三次?我不能编辑源表,因为我们有一个批次,这是填表。谢谢你的帮助

postgresql union-all materialized-views
1个回答
2
投票

问题出在第1个查询上,对于第1个查询,我是这样想的 NULL 条目。你应该为相应的列命名。

SELECT tim_bergname.name,
 tim_bergname.info1 AS hoehe,
 NULL AS mycol1,
 NULL AS mycol2,
 tim_bergname.info2 AS region,
 NULL AS mycol3,
 NULL AS mycol4,
 tim_bergname.geoloc,
 tim_bergname.symbolnummer
 FROM tim_bergname
© www.soinside.com 2019 - 2024. All rights reserved.