如何使用 case 语句 mysql 获取 MAX 等级

How to fetch MAX rank using case statement mysql

已经检查了与我的问题相关的解决方案,但没有得到我想要实现的目标
这是我的 table 结构(例如 table 名称是 tbl_rank

name      rank
apple       10
banana       2
grapes       5
orange       1
chiku        0
pineapple    0

现在我想要的结果是具有 0 排名的元素应该被赋予最大排名并且所有元素应该按其排名的降序出现(实际上创建一个新列作为 new_rank),
这是想要的结果

name      rank new_rank
apple       10       10
chiku        0       10
pineapple    0       10
grapes       5        5
banana       2        2
orange       1        1

为了得到上面的结果,我正在使用这个查询

SELECT *, (CASE WHEN rank=0 THEN MAX(rank) ELSE rank END) as new_rank
FROM `tbl_rank` ORDER BY new_rank DESC

但我得到的只是上述查询的结果的一行

不知道我哪里做错了,也不知道为什么它只返回一行

试试这个:

SELECT A.*, (CASE WHEN A.rank = 0 THEN B.rank ELSE A.rank END) AS new_rank
FROM tbl_rank A, (SELECT MAX(rank) AS rank FROM tbl_rank) AS B
ORDER BY new_rank DESC;