MYSQL如何实现排名及查询指定用户排名功能
发表于:2025-01-28 作者:千家信息网编辑
千家信息网最后更新 2025年01月28日,这篇文章主要介绍了MYSQL如何实现排名及查询指定用户排名功能,具有一定借鉴价值,感兴趣的朋友可以参考下,希望大家阅读完这篇文章之后大有收获,下面让小编带着大家一起了解一下。表结构:CREATE TA
千家信息网最后更新 2025年01月28日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安全错误
数据库的锁怎样保障安全
数据库表怎么缩小
公安 网络安全讲话
衢州租房网络安全
2017年数据库技术考点
wincc的opc服务器
上世纪互联网科技
网络技术发展带来的利弊
深圳永邦移动互联网科技公司
龙华专业的网络数据库维护
263 smtp服务器
ajax怎么操作数据库
网络安全保护知识竞赛答案
网络安全涉及哪些技术
餐饮大师数据库
联通网络服务器丢失怎么办
复合材料 航空 数据库
微信视频腾讯服务器会备份吗
方块三国服务器怎么样
租用智能家居服务器如何挑选
atac考试服务器安装
电脑软件开发和通用的区别
软件开发岗位津贴发放标准
seqserver数据库备份
软件开发靠什么赚钱
神域林地服务器
互联网金融与金融科技金雪军
开源云服务器集群管理系统
数据库副本和
日语网络技术么样
大学课程免费自学网站数据库系统