前言

本文主要介绍了关于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实现排名及查询指定用户排名功能(并列排名功能)实例代码...相关推荐

  1. mysql sql测试_MySQL语句测试——数据查询

    MySQL语句测试--数据查询 3.4 数据查询 一.单表查询 /*1.选择表中的若干列,各个列的先后顺序和语句中列名从左到右的顺序一致 select 目标表达式 from 表名; */ /*(1)s ...

  2. mysql 新建子查询_Mysql创建SQL子查询ALIAS

    通常这些被称为视图.例如: CREATE VIEW vMyLongQuery AS SELECT a, b, c FROM (LONG QUERY) X WHERE ... 然后可以像这样引用: SE ...

  3. mysql insert慢_MySQL insert语句慢查询的优化

    近期发现MySQL slow log 里面有很多慢查询,而分析慢查询日志发现大量的慢查询是insert语句的.在高峰期(早上10点左右)半小时的慢查询量可以到28G左右.遂决定优化 优化方法: 1. ...

  4. mysql多线程查询_MySQL 利用多线程提升查询性能的一种思路

    转载自:http://dinglin.iteye.com/blog/1432443 背景 报表统计类的查询是一类耗时的查询.使用场景是QPS并不大,单每个查询由于需要访问较多数据,对大量数据做处理,执 ...

  5. mysql设置定位慢查询_mysql优化——定位慢查询

    1.定位慢查询 1.show status 命令 命令使用方式:show [session|global] status like 'slow_queries' 如果你不写  [session|glo ...

  6. mysql 连接 分组_MySQL 基础 (四) 分组查询及连接查询

    MySQL 基础 (四) 分组查询及连接查询 MySQL 基础(四) 进阶 5 分组查询 语法: SELECT 分组函数, 列(要求出现在 group by 的后面) FROM 表 [where 筛选 ...

  7. mysql关联表分页查询_MySQL一对多分页查询-主表关联表条件查询问题

    文章目录 1 摘要 2 情景复现 2.1 数据模型 2.2 核心代码 2.3 测试数据 2.4 拓展一点 1 摘要 分页查询是后台项目中最常见的一种操作,在一对多(one to many)的关系表中, ...

  8. mysql结果作为另一次查询_MySql中一次查询结果用作二次查询条件

    Sql的截取关联查询 最近在写sql时,碰到了如下情况, 需求是通过一个账户的id去查询关联的该账户下的所有简历,其中地址字段要通过另一个表进行关联查询.地址字段存的是地址表中对应的编号. 例如210 ...

  9. mysql 多表中间表查询_mysql多表连接查询

    新建两张表: 表1:student  截图如下: 表2:course  截图如下: (此时这样建表只是为了演示连接SQL语句,当然实际开发中我们不会这样建表,实际开发中这两个表会有自己不同的主键.) ...

  10. MySQL数据库应用 多表查询_mysql数据库-多表查询

    今日任务 完成对MYSQL数据库的多表查询及建表的操作 教学目标 掌握MYSQL中多表的创建及多表的查询 掌握MYSQL中的表关系分析并能正确建表 昨天内容回顾: ​ 数据库的创建 : create ...

最新文章

  1. 在运筹学中什么样的解决方案是最优的
  2. CSS之布局(盒子的垂直布局)
  3. Javascript - 栈 和 单链表
  4. 解决异常:“The last packet sent successfully to the server was 0 milliseconds ago. ”的办法
  5. deepin--eclipse安装与配置
  6. Dataset之谷歌地图数据集:谷歌地图数据集的简介、安装、使用方法之详细攻略
  7. 复制百度文库的文字加什么后缀_WORD文档中如何复制样式
  8. C程序设计 电文密码——有一行电文,已按下面规律译成密码
  9. C++标准库分析总结(一)
  10. H.264 NAL层解析
  11. 春节感悟 - 原年人的爱和恨
  12. Re-ranking Person Re-identification with k-reciprocal Encoding笔记
  13. 算数平均数与几何平均数
  14. mac版 IGV(版本2.12.3)安装
  15. 如何定义和使用一个 Lambda 表达式
  16. 图片转PDF格式怎么弄?我来教你几个方法
  17. vscode 怎么设置背景图片
  18. XUPT_ACM2021寒假训练第一周练习记录
  19. Unity小游戏-平衡大师(安卓、PC、web)2D益智类游戏 项目展示+完整项目源码
  20. Android 刘海屏 适配

热门文章

  1. 体验版的软件可以取消“导出”功能限制吗?
  2. 比尔·盖茨退位 | 历史上的今天
  3. “我应为王”,比尔盖茨名言--author :邵京国
  4. win10打开软件中文乱码怎么修复
  5. 时间轮盘app(抖音数字时钟罗盘)v1.4 安卓版
  6. 网页版简单点名系统的实现(HTML5、CSS、JS、jQuery)
  7. abp更改为mysql_ABPZero系列教程之拼多多卖家工具 更改数据库为MySQL数据库
  8. Linux定时任务 crontab(-l -e)、at、batch
  9. 【中文】【吴恩达课后编程作业】Course 5 - 序列模型 - 第三周作业 - 机器翻译与触发词检测
  10. mac系统如看OFD文档