从总标记中获取排名的mysql查询出错

时间:2018-01-11 13:22:09

标签: mysql

我希望根据学生表中的总分数获得排名。

SET @PreviousRecord = NULL;
SET @Rank = 0;
SELECT studentid,total,result CASE
    WHEN @PreviousRecord = total 
        THEN @Rank
    WHEN @PreviousRecord := total 
        THEN @Rank := @Rank + 1
    END AS ranks
FROM studentdetails

ORDER BY total;

它无法正常运行

  

分析过程中发现了20个错误。     无法识别的关键字。 (附近" CASE"位置30)   无法识别的关键字。 (在" WHEN"在第37位)   意外的标记。 (靠近" @PreviousRecord"在第42位)   意外的标记。 (靠近" ="在第58位)   意外的标记。 (接近"总数"在第60位)   无法识别的关键字。 (接近"那么"在80号位置)   意外的标记。 (靠近" @ Rank"在第85位)   无法识别的关键字。 (在" WHEN"在93号位置附近)   意外的标记。 (靠近" @PreviousRecord"位置98)   意外的标记。 (靠近":="在114位)   意外的标记。 (接近"总数"位置117)   无法识别的关键字。 (靠近"那么"在137位)   意外的标记。 (靠近" @ Rank"在142位)   意外的标记。 (靠近":="在148位)   意外的标记。 (靠近" @ Rank"在151位)   意外的标记。 (靠近" +"在po

我的表结构是

enter image description here

1 个答案:

答案 0 :(得分:2)

SET @Rank = 0;
SELECT @Rank := @Rank+1,Z.studentid,Z.total
FROM
(
SELECT studentid,total
FROM studentdetails order by total
)Z

尝试以上查询。