我有一个名为" vw_season_score"使用以下查询返回此结果;
SELECT s.* FROM vw_season_one_score s
如果我将此添加到查询中,我会得到位置:
SELECT @curRow := @curRow + 1 AS position, s.* FROM vw_season_one_score s
JOIN (SELECT @curRow := 0) r
但是,如果我尝试使用以下查询创建视图...
CREATE VIEW vw_season_one_positions AS
SELECT @curRow := @curRow + 1 AS position, s.* FROM vw_season_one_score s
JOIN (SELECT @curRow := 0) r;
我收到此错误:
Error Code: 1351. View's SELECT contains a variable or parameter
那么如何使用所包含的位置来创建此视图?
提前感谢您的帮助并花时间阅读本文。
答案 0 :(得分:1)
假设排名是按分数顺序排列的(您没有包含订单),并假设两个具有相同分数的团队获得相同排名,并假设如果您有排名1, 2, 2, ..
则会不是排名3
,它会直接跳到4
,你可以使用下面可能表现糟糕的查询,但会完成工作:
select *, 1 + (select count(score) from vw_season_one_score where t.score < score) as rank
from vw_season_one_score t
order by score desc;
您可以使用此查询作为视图的基础。
如果没有重复的分数,这将给你一个很好的1, 2, ..., n
等级,没有重复。