MySQL 给定键的所有出现在一列中的值的相对排名

标签 mysql

我正在寻找一些关于如何开始寻找尝试对查询中的公共(public)键行进行排名的基本方向。

假设我有一个这样的表:

user_id | account_id | score
1         A            10
1         B            20
2         C            10
2         D            20
2         E            30

我希望做的是为每个 user_id 添加一个排名列,其中最高分获得最高排名:

user_id | account_id | score | rank
1         A            10      2
1         B            20      1
2         C            10      3
2         D            20      2
2         E            30      1

只是寻找一些基本的方向:/

最佳答案

可以使用子查询

select 
*,
(select count(1)+1 from your_table b where a.user_id=b.user_id and a.score<b.score) as rank
from your_table a

输出

1   A   10  2
1   B   20  1
2   C   10  3
2   D   20  2
2   E   30  1

关于MySQL 给定键的所有出现在一列中的值的相对排名,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/52323558/

相关文章:

javascript - PHP json 编码中的 JSON 格式无效

java - 文件中的mysql数据库url,用户名和密码

mysql - 如何在 MySQL 中使用子查询呈现两个表的混合结果?

MySQL - 查找可用的时间段

mysql - 多个表 JOIN 上的 MySQL 查询问题

php mysql 搜索关键字的描述

php - 将动态数量的复选框插入多对多关系数据库

mysql - DELETE - INNER JOIN - 子查询

mysql - Fabric-ca-server连接到azure mysql : this authentication plugin is not supported

mysql - SQL group by 如果其中一个为 null,则返回 null