当我执行下面的UNION ALL代码将几个表合并成一个实体化视图时,我得到了错误:列>>?列?<<指定了几次。正如你可以看到上面的代码,我严格地保持了原始表的序列。
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用了三次?我不能编辑源表,因为我们有一个批次,这是填表。谢谢你的帮助
问题出在第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