【问题标题】:Error in mysql query for getting rank from total markmysql查询从总分中获取排名时出错
【发布时间】: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 ...

标签: mysql


【解决方案1】:
SET @Rank = 0;
SELECT @Rank := @Rank+1,Z.studentid,Z.total
FROM
(
SELECT studentid,total
FROM studentdetails order by total
)Z

试试上面的查询。

【讨论】:

  • 你能告诉你Z在你的查询中是什么意思吗
  • 我刚刚给子查询起了别名。
  • 做到了.. 谢谢
  • 永远欢迎您
猜你喜欢
  • 1970-01-01
  • 2012-12-30
  • 1970-01-01
  • 2011-06-27
  • 1970-01-01
  • 2019-08-12
  • 2014-06-14
  • 2012-10-20
  • 1970-01-01
相关资源
最近更新 更多