mysql怎么做排名并列_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怎么做排名并列_MySQL实现排名并查询指定用户排名功能,并列排名功能相关推荐
- mysql并列查询_MYSQL实现排名及查询指定用户排名功能(并列排名功能)实例代码...
前言 本文主要介绍了关于mysql实现排名及查询指定用户排名功能(并列排名功能)的相关内容,分享出来供大家参考学习,下面话不多说了,来一起看看详细的介绍吧 表结构: create table test ...
- mysql作排名,MYSQL实现排名及查询指定用户排名功能(并列排名功能)实例代码...
前言 本文主要介绍了关于MYSQL实现排名及查询指定用户排名功能(并列排名功能)的相关内容,分享出来供大家参考学习,下面话不多说了,来一起看看详细的介绍吧 表结构: CREATE TABLE test ...
- php查排名,PHP实现排名并查询指定用户排名
php查询排名的实现方法:首先假设一个user表,此时需要根据number客户数量对用户进行排名:然后我们要对user表内的用户进行一个排名,语句为"$sql = "SELECT ...
- php 获取排名,PHP实现排名并查询指定用户排名
PHP实现排名并查询指定用户排名2020-07-07 17:30:21 php查询排名的实现方法:首先假设一个user表,此时需要根据number客户数量对用户进行排名:然后我们要对user表内的用户 ...
- mysql 查询指定字段数据_MySQL使用select语句查询指定表中指定列(字段)的数据
本文介绍mysql数据库中执行select查询语句,查询指定列的数据,即指定字段的数据. 再来回顾一下sql语句中的select语句的语法: select 语句的基本语法: select from w ...
- mysql select 指定列_MySQL使用select语句查询指定表中指定列(字段)的数据
本文介绍mysql数据库中执行select查询语句,查询指定列的数据,即指定字段的数据. 再来回顾一下sql语句中的select语句的语法: select 语句的基本语法: select from w ...
- mysql 如何做增量备份_mysql 做增量备份
首先在这里我要感谢我的同事 @mamiya_c3 哥的指教...QQQ 最近数据库的数据猛然增多,以前的每天一个正备份的方式显然压力越来越大,对备份的数据传输考验也随之加大,所以考虑改成每周二服务器维 ...
- mysql 如何做增量备份_mysql实现增量备份
有点要注意 如果你误删了表 想通过这个恢复 必须恢复日志里面有创建表的日志 不然的话是无法回复的 ?就是必须是从你开始创建表的时候就已经记录日志了? 恢复到哪个位置 就按照哪个位置来计算 mysql ...
- mysql怎么做每天签到_MYSQL实现连续签到功能断签一天从头开始(sql语句)
1,创建测试表 create table `testsign` ( `userid` int(5) default null, `username` varchar(20) default null, ...
最新文章
- 关于介绍编程前景的html文档,HTML编程基础稿件(32页)-原创力文档
- 《当程序员的那些狗日日子》(五)工作中,工作外
- KeyMob:建立一个稳定的移动广告聚合平台!
- cas跨域单点登录原理_CAS实现SSO单点登录原理
- 怀旧版大脚插件未能从服务器,魔兽世界怀旧服大脚插件
- 官方公布94本预警期刊名单,其中5本高风险
- Windows远程桌面(mstsc)不能复制粘贴的解决办法
- 车窗上为啥总有一些小黑点?没想到居然藏着大作用!
- linux视频在windows播放器,适用于Windows和Linux的免费多媒体播放器SMPlayer 18.6.0发布 - 爱绿豆...
- 计算机二级C选择题精华
- Xtreme ToolkitPro 编译选项
- php数据库find(),db_find()
- 为什么都建议学java而不是python-为什么都建议学Java而不是Python?两者有什么区别吗?...
- PDO 查询mysql返回字段整型变为String型解决方法
- 电容或电感的电压_电容和电感的区别、电压超前电流、电流超前电压,傻傻分不清楚...
- 上海公积金贷款买房攻略详细解读
- JAVA中台化与常用组件设计
- 调用个人微信的API接口实现微信收发消息
- 【已解决】Spring容器中找不到ServletWebServerFactory类出现的异常
- 使用matlab将nc文件转成tif文件