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 sql测试_MySQL语句测试——数据查询
MySQL语句测试--数据查询 3.4 数据查询 一.单表查询 /*1.选择表中的若干列,各个列的先后顺序和语句中列名从左到右的顺序一致 select 目标表达式 from 表名; */ /*(1)s ...
- mysql 新建子查询_Mysql创建SQL子查询ALIAS
通常这些被称为视图.例如: CREATE VIEW vMyLongQuery AS SELECT a, b, c FROM (LONG QUERY) X WHERE ... 然后可以像这样引用: SE ...
- mysql insert慢_MySQL insert语句慢查询的优化
近期发现MySQL slow log 里面有很多慢查询,而分析慢查询日志发现大量的慢查询是insert语句的.在高峰期(早上10点左右)半小时的慢查询量可以到28G左右.遂决定优化 优化方法: 1. ...
- mysql多线程查询_MySQL 利用多线程提升查询性能的一种思路
转载自:http://dinglin.iteye.com/blog/1432443 背景 报表统计类的查询是一类耗时的查询.使用场景是QPS并不大,单每个查询由于需要访问较多数据,对大量数据做处理,执 ...
- mysql设置定位慢查询_mysql优化——定位慢查询
1.定位慢查询 1.show status 命令 命令使用方式:show [session|global] status like 'slow_queries' 如果你不写 [session|glo ...
- mysql 连接 分组_MySQL 基础 (四) 分组查询及连接查询
MySQL 基础 (四) 分组查询及连接查询 MySQL 基础(四) 进阶 5 分组查询 语法: SELECT 分组函数, 列(要求出现在 group by 的后面) FROM 表 [where 筛选 ...
- mysql关联表分页查询_MySQL一对多分页查询-主表关联表条件查询问题
文章目录 1 摘要 2 情景复现 2.1 数据模型 2.2 核心代码 2.3 测试数据 2.4 拓展一点 1 摘要 分页查询是后台项目中最常见的一种操作,在一对多(one to many)的关系表中, ...
- mysql结果作为另一次查询_MySql中一次查询结果用作二次查询条件
Sql的截取关联查询 最近在写sql时,碰到了如下情况, 需求是通过一个账户的id去查询关联的该账户下的所有简历,其中地址字段要通过另一个表进行关联查询.地址字段存的是地址表中对应的编号. 例如210 ...
- mysql 多表中间表查询_mysql多表连接查询
新建两张表: 表1:student 截图如下: 表2:course 截图如下: (此时这样建表只是为了演示连接SQL语句,当然实际开发中我们不会这样建表,实际开发中这两个表会有自己不同的主键.) ...
- MySQL数据库应用 多表查询_mysql数据库-多表查询
今日任务 完成对MYSQL数据库的多表查询及建表的操作 教学目标 掌握MYSQL中多表的创建及多表的查询 掌握MYSQL中的表关系分析并能正确建表 昨天内容回顾: 数据库的创建 : create ...
最新文章
- 在运筹学中什么样的解决方案是最优的
- CSS之布局(盒子的垂直布局)
- Javascript - 栈 和 单链表
- 解决异常:“The last packet sent successfully to the server was 0 milliseconds ago. ”的办法
- deepin--eclipse安装与配置
- Dataset之谷歌地图数据集:谷歌地图数据集的简介、安装、使用方法之详细攻略
- 复制百度文库的文字加什么后缀_WORD文档中如何复制样式
- C程序设计 电文密码——有一行电文,已按下面规律译成密码
- C++标准库分析总结(一)
- H.264 NAL层解析
- 春节感悟 - 原年人的爱和恨
- Re-ranking Person Re-identification with k-reciprocal Encoding笔记
- 算数平均数与几何平均数
- mac版 IGV(版本2.12.3)安装
- 如何定义和使用一个 Lambda 表达式
- 图片转PDF格式怎么弄?我来教你几个方法
- vscode 怎么设置背景图片
- XUPT_ACM2021寒假训练第一周练习记录
- Unity小游戏-平衡大师(安卓、PC、web)2D益智类游戏 项目展示+完整项目源码
- Android 刘海屏 适配
热门文章
- 体验版的软件可以取消“导出”功能限制吗?
- 比尔·盖茨退位 | 历史上的今天
- “我应为王”,比尔盖茨名言--author :邵京国
- win10打开软件中文乱码怎么修复
- 时间轮盘app(抖音数字时钟罗盘)v1.4 安卓版
- 网页版简单点名系统的实现(HTML5、CSS、JS、jQuery)
- abp更改为mysql_ABPZero系列教程之拼多多卖家工具 更改数据库为MySQL数据库
- Linux定时任务 crontab(-l -e)、at、batch
- 【中文】【吴恩达课后编程作业】Course 5 - 序列模型 - 第三周作业 - 机器翻译与触发词检测
- mac系统如看OFD文档