MYSQL如何实现排名及查询指定用户排名功能
发表于:2025-11-12 作者:千家信息网编辑
千家信息网最后更新 2025年11月12日,这篇文章主要介绍了MYSQL如何实现排名及查询指定用户排名功能,具有一定借鉴价值,感兴趣的朋友可以参考下,希望大家阅读完这篇文章之后大有收获,下面让小编带着大家一起了解一下。表结构:CREATE TA
千家信息网最后更新 2025年11月12日MYSQL如何实现排名及查询指定用户排名功能
这篇文章主要介绍了MYSQL如何实现排名及查询指定用户排名功能,具有一定借鉴价值,感兴趣的朋友可以参考下,希望大家阅读完这篇文章之后大有收获,下面让小编带着大家一起了解一下。
表结构:
CREATE TABLE test.testsort ( id int(11) NOT NULL AUTO_INCREMENT, uid int(11) DEFAULT 0 COMMENT '用户id', score decimal(10, 2) DEFAULT 0.00 COMMENT '分数', PRIMARY KEY (id) ) ENGINE = INNODB AUTO_INCREMENT = 1 CHARACTER SET utf8 COLLATE utf8_general_ci COMMENT = '测试排序' ROW_FORMAT = DYNAMIC;
思路:可以先排序,再对结果进行编号;也可以先查询结果,再排序编号。
说明:
@rownum := @rownum + 1 中 := 是赋值的作用,这句话的意思是先执行@rownum + 1,然后把值赋给@rownum;
(SELECT @rownum := 0) r 这句话的意思是设置rownum字段的初始值为0,即编号从1开始。
实现排名:
方法一:
SELECT t.*, @rownum := @rownum + 1 AS rownum FROM (SELECT @rownum := 0) r, (SELECT * FROM testsort ORDER BY score DESC) AS t;
方法二:
SELECT t.*, @rownum := @rownum + 1 AS rownum FROM (SELECT @rownum := 0) r, testsort AS t ORDER BY t.score DESC;
结果:

查看指定用户排名:
方法一:
SELECT b.* FROM ( SELECT t.*, @rownum := @rownum + 1 AS rownum FROM (SELECT @rownum := 0) r, (SELECT * FROM testsort ORDER BY score DESC) AS t ) AS b WHERE b.uid = 222;
方法二:
SELECT b.* from ( SELECT t.*, @rownum := @rownum + 1 AS rownum FROM (SELECT @rownum := 0) r, testsort AS t ORDER BY t.score DESC ) as b where b.uid = 222;
结果:
实现并列排名(相同分数排名相同):
SELECT obj.uid, obj.score, CASE WHEN @rowtotal = obj.score THEN @rownum WHEN @rowtotal := obj.score THEN @rownum :=@rownum + 1 WHEN @rowtotal = 0 THEN @rownum :=@rownum + 1 END AS rownum FROM ( SELECT uid, score FROM testsort ORDER BY score DESC ) AS obj, (SELECT @rownum := 0 ,@rowtotal := NULL) r
查询指定用户并列排名:
SELECT total.* FROM (SELECT obj.uid, obj.score, CASE WHEN @rowtotal = obj.score THEN @rownum WHEN @rowtotal := obj.score THEN @rownum :=@rownum + 1 WHEN @rowtotal = 0 THEN @rownum :=@rownum + 1 END AS rownum FROM ( SELECT uid, score FROM testsort ORDER BY score DESC ) AS obj, (SELECT @rownum := 0 ,@rowtotal := NULL) r) AS total WHERE total.uid = 222;
感谢你能够认真阅读完这篇文章,希望小编分享的"MYSQL如何实现排名及查询指定用户排名功能"这篇文章对大家有帮助,同时也希望大家多多支持,关注行业资讯频道,更多相关知识等着你来学习!
用户
查询
方法
篇文章
结果
排序
功能
相同
分数
意思
这句话
价值
作用
兴趣
同时
字段
思路
更多
朋友
知识
数据库的安全要保护哪些东西
数据库安全各自的含义是什么
生产安全数据库录入
数据库的安全性及管理
数据库安全策略包含哪些
海淀数据库安全审计系统
建立农村房屋安全信息数据库
易用的数据库客户端支持安全管理
连接数据库失败ssl安全错误
数据库的锁怎样保障安全
华为微信总是修复数据库
蜜罐网络技术
聊城吉顺达网络技术
网络安全管理风险
苹果服务器异常什么意思
学生会网络技术部面试
江苏系统软件开发管理
湛江汽车软件开发收费
网络安全宣传日内容
青岛银行网络安全招聘
天津环保软件开发推荐
网络安全主要特征之一系统性
无所谓伴奏软件开发
常山刚好在网络安全板块
拉萨ipfs分布式服务器
棋牌游戏手机软件开发
边锋网络安全教育
user 数据库
惠普服务器报错post1700
维普数据库收录了什么
搜狐畅游网络技术有限公司
服务器之间传输网页的协议
常州信息化软件开发优势
lol语音服务器连不上怎么办
苹果服务器异常什么意思
网络安全边界是什么
网络安全志愿者要去派出所报道吗
石家庄gps授时服务器
河南办公系统软件开发大概多少钱
货币交易软件开发