我是 postgresql 新手。谁能建议这个错误的原因和解决方案?然而,如果我选择一个额外的总和(s.length),它会起作用,但我不会在我的结果中这样做。
代码:
create or replace view q1("group",album,year) as
select g.name, a.title, a.year
from Groups g, Albums a, Songs s
where a.made_by = g.id and s.on_album = a.id
group by a.title, g.name, a.year
order by sum(s.length) desc
limit 1;
错误信息:
错误:无法从视图中删除列
正如 PostgreSQL 文档中提到的:
CREATE OR REPLACE VIEW 类似,但是如果视图同名 已经存在,被替换。 新查询必须生成相同的 由现有视图查询生成的列(即 相同的列名、相同的顺序和相同的数据类型),但是 它可能会在列表末尾添加额外的列。 计算 产生的输出列可能完全不同。
参考 Postgres
CREATE VIEW
文档
简单地说,您可以在现有列的末尾添加新列,但不能删除、重新排序、重命名或更改现有列的数据类型。
因此,就您而言,您必须
drop
整个视图并recreate
它。