错误:列>>?列?<<指定了多次

时间:2020-05-13 13:23:45

标签: postgresql union-all materialized-views

当我执行以下UNION ALL代码将多个表组合到一个实例化视图中时,出现错误:列>>?column?<<多次指定。如您在代码上方所见,我严格遵守原始表中的顺序。

    1. 名称
    1. info1 AS hoehe
    1. info1 AS艺术
    1. info1 AS名称_替代
    1. info2 AS地区
    1. info3 AS text_hoehe
    1. kn AS name_lang
    1. geoloc
    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被使用了3次?我无法编辑原始表,因为我们有一批正在填充表。谢谢您的帮助!

1 个答案:

答案 0 :(得分:2)

问题在于第一个查询中的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
相关问题