Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/mysql/72.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
具有排序行的MySql视图_Mysql - Fatal编程技术网

具有排序行的MySql视图

具有排序行的MySql视图,mysql,Mysql,我有一个名为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_

我有一个名为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
那么,在包含位置的情况下,我如何才能形成这种观点呢


提前感谢您的帮助并花时间阅读此文章。

假设排名是按分数顺序排列的,您没有包含排序依据,假设两个得分相同的团队获得相同的排名,并且假设如果您有排名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没有重复


我现在不能测试,但是如果你把它包装成创建视图,它会允许你创建视图吗。。。从选择@curRow:=@curRow+1…..中选择*。。。。。分?错误抱怨视图的SELECT有一个变量,但并不意味着它不能出现在任何地方。您好,Michael,这将在视图中生成一个子查询错误,这不是一个可行的选项。您不能在视图中使用变量:从:SELECT语句不能引用系统变量或用户定义的变量。确定,我们已经知道,通过错误代码输出,有没有关于如何实现这一点的建议?如果他们的分数相等,他们应该得到什么等级?视图中已经实现了order by子句,我忘了添加这些信息,然而,这是一个有趣的分析,你已经与并列的分数,使我认为,如果认为这是最好的方法,为这个案件,除此之外,你的答案完美地工作,谢谢!