mysql查询从总分中获取排名时出错
Posted
技术标签:
【中文标题】mysql查询从总分中获取排名时出错【英文标题】:Error in mysql query for getting rank from total mark 【发布时间】:2018-01-11 13:22:09 【问题描述】:我想根据学生表中的总分获得排名。
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 个错误。 无法识别的关键字。 (靠近位置 30 的“CASE”) 无法识别的关键字。 (位置 37 的“WHEN”附近) 意外的标记。 (靠近位置 42 的“@PreviousRecord”) 意外的标记。 (靠近位置 58 的“=”) 意外的标记。 (在第 60 位接近“总计”) 无法识别的关键字。 (在位置 80 的“THEN”附近) 意外的标记。 (靠近位置 85 的“@Rank”) 无法识别的关键字。 (靠近位置 93 的“WHEN”) 意外的标记。 (靠近位置 98 的“@PreviousRecord”) 意外的标记。 (靠近位置 114 的“:=”) 意外的标记。 (接近位置 117 的“总计”) 无法识别的关键字。 (靠近位置 137 的“THEN”) 意外的标记。 (靠近位置 142 的“@Rank”) 意外的标记。 (靠近位置 148 的“:=”) 意外的标记。 (靠近位置 151 的“@Rank”) 意外的标记。 (靠近 po 的“+”
我的表结构是
【问题讨论】:
提供您的完整查询。 这就是我的全部查询 看起来你这里有语法错误:result CASE
...
【参考方案1】:
SET @Rank = 0;
SELECT @Rank := @Rank+1,Z.studentid,Z.total
FROM
(
SELECT studentid,total
FROM studentdetails order by total
)Z
试试上面的查询。
【讨论】:
你能告诉你Z
在你的查询中是什么意思吗
我刚刚给子查询起了别名。
做到了.. 谢谢
永远欢迎您以上是关于mysql查询从总分中获取排名时出错的主要内容,如果未能解决你的问题,请参考以下文章