我是postgresql的新手。有人能告诉我这个错误的原因和解决方法吗?但是如果我选择了一个额外的和(s。长度),它会工作,但是我不会在我的结果中出现这个错误。
密码:
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
;
错误消息:
错误:无法从视图中删除列
1条答案
按热度按时间3j86kqsm1#
正如PostgreSQL文档中提到的:
CREATE OR REPLACE VIEW与此类似,但如果已存在同名的视图,则会替换该视图。新查询生成的列必须与现有视图查询生成的列相同(即相同的列名以相同的顺序排列并具有相同的数据类型),但是它可能会在列表的末尾添加额外的列,产生输出列的计算可能完全不同。
参考Postgres
CREATE VIEW
docs可以在现有列的末尾添加新列,但不能删除、重新排序、重命名或更改现有列的数据类型。
因此,在您的情况下,您必须删除整个视图并重新创建它。