我正在创建一个包含联合查询的实例化视图,并收到以下错误:列“ column1”被多次指定。
此错误的潜在原因是什么?
我该如何解决?
以下是我的代码的示例:
CREATE MATERIALIZED VIEW schema.view_name_mv
(
"column1",
"column2",
"column3"
)
as
select
tn1.column1,
tn1.column2,
tn1.column3
from schema.table_name1 tn1,
schema.table_name2 tn2
where tn1.column1 = tn2.column1
and tn1.column2 = tn2.column2
union all
select
tn1.column1,
tn1.column2,
tn1.column3
from schema.table_name1 tn1,
schema.table_name3 tn3
where tn1.column1 = tn3.column1
and tn1.column2 = tn3.colum2;
注意:在PGAdmin 4中独立运行查询会运行良好,但是使用同一查询创建实例化视图将抛出上面列出的错误。
答案 0 :(得分:0)
当您联接表时,如果两个列都具有相同的名称,而您没有指定哪个列属于每个表,则会发生此错误。我认为这些值column1,column2和column3是伪造的,并且它们充满了如下所示的sintax错误,我真的不知道在您的真实代码中是否忘记了重命名一列。
尝试在实际代码中寻找类似的内容:
select column1 from
schema.table1 tn1, schema.table2 tn2
where tn1.column1 = tn2.column2
在此示例中,如果 column1 来自表1或表2
,则未指定此示例中的sintax错误:
CREATE MATERIALIZED VIEW schema.view_name_mv
(
"column1",
"column2",
"column3", << remove this comma
)
union all
select
tn1.colum1, << the name here is wrong, replace to column1
tn1.colum2, << the name here is wrong, replace to column2
tn1.column3