排名函数的类型

rank函数:如果有并列名次的行,会占用下一名次的位置。比如正常排名是1,2,3,4,rank函数排名之后,结果是:1,1,1,4。

dense_rank函数:如果有并列名次的行,不占用下一名次的位置。比如正常排名是1,2,3,4,dense_rank函数排名之后,结果是:1,1,1,2。

row_number函数:不考虑并列名次的情况。比如前3名是并列的名次,row_number函数排名之后是正常的1,2,3,4。

通用的mysql排名解法

由于mysql8.0才有窗口函数解决排名问题,之前的版本需要自行实现排名函数,我写了一些通用的sql套用以上的排名场景,以下sql经过了本人的自测。

无分类的rank

select re.ele, re.myrank

from (

SELECT t.ele,

@incRank := @incRank + 1,

IF(@sort_element = t.ele, @cur_rank, @cur_rank := @incRank) myrank,

@sort_element := t.ele

FROM tname t,

(SELECT @cur_rank := 0, @sort_element := NULL, @incRank := 0) r

ORDER BY t.ele DESC) re;

复制代码

无分类的dense_rank

select re.ele, re.myrank

from (

SELECT t.ele,

@sort_element,

IF(@sort_element = t.ele, @cur_rank, @cur_rank := @cur_rank + 1) myrank,

@sort_element := t.ele

FROM tname t,

(SELECT @cur_rank := 0, @sort_element = NULL) tmp

ORDER BY t.ele DESC) re;

复制代码

无分类的row_number

SELECT t.ele, (@cur_rank := @cur_rank + 1) myrank

FROM tname t,(SELECT @cur_rank := 0) tmp

ORDER BY t.ele desc;

复制代码

分类rank

select re.groupele, re.sortele, re.myrank

from (

SELECT t.groupele,

t.sortele,

IF(@pre_course_id = t.groupele,

@incRank := @incRank + 1,

@incRank := 1) tempele1,

IF(@group_ele = t.groupele,

IF(@sort_ele = t.sortele, @cur_rank, @cur_rank := @incRank),

@cur_rank := 1) myrank,

@sort_ele := t.sortele tempele2,

@group_ele := t.groupele tempele3

FROM tname t,

(SELECT @cur_rank := 0, @group_ele := NULL, @sort_ele := NULL, @incRank := 1) tmp

ORDER BY t.groupele, t.sortele DESC) re;

复制代码

分类dense_rank

select re.groupele,re.sortele,re.myrank

form (

SELECT t.groupele,t.sortele,

IF(@group_ele = t.groupele

IF(@sort_ele = t.sortele, @cur_rank, @cur_rank := @cur_rank + 1),

@cur_rank := 1) myrank,

@sort_ele := t.sortele,

@group_ele := t.groupele

FROM tname t, (SELECT @cur_rank :=0, @sort_ele = NULL, @group_ele := NULL) r

ORDER BY C, score DESC)re;

复制代码

分类row_number

select re.groupele, re.sortele, re.myrank

from (

SELECT t.groupele,

t.sortele,

IF(@group_ele = t.groupele, @cur_rank := @cur_rank + 1, @cur_rank := 1) myrank,

@group_ele := t.groupele

FROM tnale t,

(SELECT @cur_rank := 0, @group_ele := NULL) r

ORDER BY t.groupele, t.sortele DESC) re;

复制代码

mysql 当前排名查询_mysql排名查询相关推荐

  1. mysql数据库的查询_mysql数据库查询

    查询数据指从数据库中获取所需要的数据.查询数据是数据库操作中最常用,也是最重要的操作.用户可以根据自己对数据的需求,使用不同的查询方式.通过不同的查询方式,可以获得不同的数据.MySQL中是使用SEL ...

  2. mysql 内嵌查询_mysql嵌套查询_MySQL

    mysql嵌套查询_MySQL 一:创建ecs_goods表插入以下数据: +----------+------------------------------+--------+---------- ...

  3. 简单mysql 查询_MySQL简单查询详解

    MySQL的查询操作 单表查询:简单查询 多表查询:连接查询 联合查询 布尔条件表达式操作符= 等值比较 <=>:跟空值比较不会产生额外信息的等值比较 <>:不等值 <: ...

  4. mysql的复杂查询_mysql复杂查询

    所谓复杂查询,指涉及多个表.具有嵌套等复杂结构的查询.这里简要介绍典型的几种复杂查询格式. 一.连接查询 连接是区别关系与非关系系统的最重要的标志.通过连接运算符可以实现多个表查询.连接查询主要包括内 ...

  5. mysql rand() 子查询_MySQL ------ 子查询(十三)

    查询(query):任何SQL 都是查询,但此术语一般指select 语句 子查询(subquery):嵌套在查询中的查询,MySQL4.1 引入对子查询的支持. 接下来得就比较有意思了,需要你对于表 ...

  6. mysql 最值复杂查询_MySQL高级查询

    我们使用SQL查询不能只使用很简单.最基础的SELECT语句查询.如果想从多个表查询比较复杂的信息,就会使用高级查询实现.常见的高级查询包括多表连接查询.内连接查询.外连接查询与组合查询等,今天我们先 ...

  7. mysql 组合查询_MySQL组合查询教程

    #MYSQL#这是我MySQL的第八篇教程.本篇主要介绍的是MySQL的组合查询的用法.在大多数的SQL查询中都只包含从一个或者多个表中返回数据的单条SELECT语句,MySQL其实也支持允许执行多条 ...

  8. 云数据库mysql 慢查询_Mysql慢查询

    一.简介 开启慢查询日志,可以让MySQL记录下查询超过指定时间的语句,通过定位分析性能的瓶颈,才能更好的优化数据库系统的性能. 二.参数说明 slow_query_log 慢查询开启状态 slow_ ...

  9. mysql 分号子查询_MySQL子查询详解

    子查询指一个查询语句嵌套在另一个查询语句内部的查询,这个特性从 MySQL 4.1 开始引入,在 SELECT 子句中先计算子查询,子查询结果作为外层另一个查询的过滤条件,查询可以基于一个表或者多个表 ...

  10. mysql分表全局查询_mysql如何查询多样同样的表/sql分表查询、java项目日志表分表的开发思路/按月分表...

    之前开发的一个监控系统,数据库的日志表是单表,虽然现在数据还不大并且做了查询sql优化,不过以后数据库的日志表数据肯定会越来越庞大,将会导致查询缓慢,所以把日志表改成分表,日志表可以按时间做水平分表, ...

最新文章

  1. 从这篇YouTube论文,剖析强化学习在工业级场景推荐系统中的应用
  2. mysql5.5.9_mysql5.5.9字符集设置
  3. c#中SqlHelper类的编写(三)
  4. [BJDCTF2020]EasySearch
  5. Lesson 8.5 SOFTMAX回归
  6. 第三次学JAVA再学不好就吃翔(part104)--flush和close
  7. 陶哲轩对数学学习的一些建议
  8. socket网络编程tcp
  9. CVS配置过程 (部分转)
  10. (福利)中秋灯谜,猜中有奖
  11. [转载][工具]Eclipse Console 加大显示的行数,禁止弹出
  12. java.text.ParseException: Unparseable date:
  13. axure如何导出原件_彻底抛弃WORD!教你用Axure快速输出高质量的PRD
  14. shl归纳推理测试题库_笔经总结含征服shl功略
  15. 图像处理 图像识别 模式识别 分类检测
  16. 剑网三查询服务器角色信息,剑网三人物介绍
  17. 【牛客竞赛】Increasing Subsequence题解
  18. view设置圆角 android,Android 设置圆角View
  19. HTML径向效果,HTML Canvas实现径向渐变效果
  20. 安卓手机与Linux同步后,搜索文件内的内容

热门文章

  1. 一个HR人给应届生的面试建议,关于应届生面试自我介绍、常见问题及回答、面试礼仪、技巧等,非常全面、非常专业,面试前必看,晚了后悔呀。
  2. webots仿真机器人平台
  3. ubuntu 20.04 更改第一次登录紫色背景(终于有办法修改啦!!!)
  4. 为什么Git把SVN拍在了沙滩上?
  5. 计算机学业水平考试成绩查询系统,学业水平考试成绩查询系统登陆地址
  6. linux 串口 中断方式,设置在linux下串口中断(setting serial port interruption in
  7. httprunnermanager运行
  8. WSL无法启动【\\wsl$\Ubuntu-18.04无法访问。你可能没有权限使用网络资源。】
  9. 使用clickhouse时mysql表引擎从mysql获取数据时时区自动加八小时[已解决]
  10. Squirrel状态机-从原理探究到最佳实践