我希望根据学生表中的总分数获得排名。
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
我的表结构是
答案 0 :(得分:2)
SET @Rank = 0;
SELECT @Rank := @Rank+1,Z.studentid,Z.total
FROM
(
SELECT studentid,total
FROM studentdetails order by total
)Z
尝试以上查询。