我试着用子查询的方法来解决这个问题,我得到了一种我无法理解的行为。
select score,
(select count(distinct s1.score) from scores s1
where s1.score > s2.score)+1 as 'rank'
from scores s2
order by s2.score desc;上面的代码运行非常完美,但是:
查询第3行中的
请解释一下为什么会这样。非常感谢你考虑我的要求。
发布于 2022-06-06 06:51:44
从MySQL 8+开始,RANK已成为保留的MySQL关键字。这是由于MySQL 8+引入了一个名为RANK的解析函数。因此,如果您想要使用RANK作为别名,则应该用backticks或双引号转义它:
SELECT score,
(SELECT COUNT(DISTINCT s1.score) FROM scores s1
WHERE s1.score > s2.score) + 1 AS `rank`
FROM scores s2
ORDER BY `rank` DESC;https://stackoverflow.com/questions/72513972
复制相似问题