mysql如何获取排名?

假设表stu如下

id user_id score
1  3        98
2  34       95
3  7        92
4  25       90

分数已经降序排列了,现在根据输入user_id(7),获取到排名应该是3,怎么写sql语句呢?

阅读 4.1k
3 个回答

你这个问题描述的不够清晰,你所说的表是已经查过的吗?
简单来写一下:
图片描述

其实,只是在对表查询的时候,加一列虚拟自增的列。

user_id(7) 和 id(3) 不是在同一列吗?

SELECT IF(
EXISTS(
    SELECT `score`
    FROM `stu`
    WHERE `user_id`=7
),
(
    SELECT COUNT(1)+1
    FROM `stu`
    WHERE `score` > (
        SELECT `score`
        FROM `stu`
        WHERE `user_id`=7
    )
), 
NULL);
撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题