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查询从总分中获取排名时出错的主要内容,如果未能解决你的问题,请参考以下文章

MySQL实现排名查询并指定用户查看排名

MySQL实现排名查询并指定用户查看排名

PHP+MYSQL查询结果上加一个排名序号且分页不间断

如何使用 PHP 和 MySQL 显示学生在百名学生中的排名?

怎么在MYSQL查询学生平均成绩及其名次

通过 JPA 标准查询从 SQL 视图获取列表时出错