已经检查过与我的问题相关的解决方案,但没有得到我想要实现的目标
这是我的表结构(例如,表名为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
但由于上述查询
,我得到的只是一行
不知道我在哪里做错了,或者为什么只返回一行
答案 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;