Mysql 选择时带大小写的sql

Mysql 选择时带大小写的sql,mysql,sql,Mysql,Sql,我在做这个问题, 编写SQL查询以对分数进行排名。如果两人之间有平局 分数,两者应具有相同的排名。请注意,打成平局后 下一个排名数字应为下一个连续整数值。在里面 换句话说,等级之间不应该有“漏洞” 例如,给定上述分数表,您的查询应生成 以下报告(按最高分数排序): 答案是: 在下面编写MySQL查询语句 我不理解这一部分: WHEN @rank := @rank + 1 THEN @rank 当这行可以被触发时,我为什么需要呢?这行: WHEN @rank := @rank + 1 THEN

我在做这个问题,

编写SQL查询以对分数进行排名。如果两人之间有平局 分数,两者应具有相同的排名。请注意,打成平局后 下一个排名数字应为下一个连续整数值。在里面 换句话说,等级之间不应该有“漏洞”

例如,给定上述分数表,您的查询应生成 以下报告(按最高分数排序):

答案是:

在下面编写MySQL查询语句

我不理解这一部分:

WHEN @rank := @rank + 1 THEN @rank

当这行可以被触发时,我为什么需要呢?

这行:

WHEN @rank := @rank + 1 THEN @rank
它递增
@rank
并返回递增的变量。这几乎完全等同于:

ELSE @rank := @rank + 1
(唯一的区别是
NULL
值,但该值可能不是
NULL


逻辑是什么?当表达式为非零和非NULL时,MySQL将其解释为true。递增的正计数器将是非零和非空的,因此
when
子句为true。然后返回值。

“何时可以触发此行?”-呃,什么?还有,是oracle还是mySQL?如果你问:=是什么意思,那句话实际上是说“当秩等于秩+1”。在这种情况下,等式不是一个等级的排序,它在数学上等于(如果你做C++或不同的语言,想想‘=’和‘==’的区别’。‘:=’在pSueDO代码中使用。你可以通过Google“冒号等于运算符”来谷歌这样的东西。
WHEN @rank := @rank + 1 THEN @rank
WHEN @rank := @rank + 1 THEN @rank
ELSE @rank := @rank + 1