我创建了以下视图:
CREATE VIEW games_lost as
select p.id, p.name, count(m.loser) as ng
from players p left join matches m
on p.id=m.loser
where m.tournament_id = 0
group by p.id, p.name;
我希望更新给定的tournament_id的WHERE 看了PostgreSQL docs,但没有找到解释如何去做。
答案 0 :(得分:2)
你做不到。您必须使用CREATE OR REPLACE VIEW
并从头开始重新创建整个事物。来自the Postgres docs:
ALTER VIEW
更改视图的各种辅助属性。 (如果您要修改视图的定义查询,请使用CREATE OR REPLACE VIEW
。)
(强调补充)
答案 1 :(得分:1)
似乎对这里使用观点存在误解。 SELECT查询中使用的视图与表格完全相同。
您可以使用CREATE OR REPLACE VIEW定期替换视图,但这将是非常糟糕的设计。
所以我的建议是视图返回按锦标赛ID分组的所有锦标赛的结果:
CREATE VIEW games_lost as
select p.id, p.name, m.tournament_id, count(m.loser) as ng
from players p left join matches m
on p.id=m.loser
group by p.id, p.name,m.tournament_id;
然后在代码中,您将使用WHERE子句中的特定id查询视图:
SELECT id, name, ng FROM games_lost WHERE tournament_id = 0;