如何使用case语句mysql获取MAX排名

时间:2015-01-06 13:11:26

标签: mysql sql select max ranking

已经检查过与我的问题相关的解决方案,但没有得到我想要实现的目标 这是我的表结构(例如,表名为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

但由于上述查询

,我得到的只是一行

enter image description here

不知道我在哪里做错了,或者为什么只返回一行

1 个答案:

答案 0 :(得分:2)

试试这个:

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;