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

标签 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

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

最佳答案

试试这个:

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;

关于mysql - 如何使用 case 语句 mysql 获取 MAX 排名,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27799410/

相关文章:

mysql - 删除 MySql 前触发

php - 如何使用 PHP 函数中的日期和时间查询数据库

SQLite 查询仅匹配多行或相同 ID

jquery - 如何将选择选项值和文本存储在 JSON 对象或数组中?

sql - 选择表中的前 1 组

javascript - 在 ddSlick 下拉列表中获取所选 <option> 的值

mysql - 每个人有两个 ID 的行数总和

mysql - MySql 中复杂的一对多查询

mysql - 将默认值添加到架构构建器中的枚举类型字段

mysql - 错误代码 : 1822. 添加外键约束失败。引用表 'ekdromes_ibfk_1' 中缺少约束 'pwlhseis' 的索引