mysql 当前排名查询_mysql排名查询
排名函数的类型
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排名查询相关推荐
- mysql数据库的查询_mysql数据库查询
查询数据指从数据库中获取所需要的数据.查询数据是数据库操作中最常用,也是最重要的操作.用户可以根据自己对数据的需求,使用不同的查询方式.通过不同的查询方式,可以获得不同的数据.MySQL中是使用SEL ...
- mysql 内嵌查询_mysql嵌套查询_MySQL
mysql嵌套查询_MySQL 一:创建ecs_goods表插入以下数据: +----------+------------------------------+--------+---------- ...
- 简单mysql 查询_MySQL简单查询详解
MySQL的查询操作 单表查询:简单查询 多表查询:连接查询 联合查询 布尔条件表达式操作符= 等值比较 <=>:跟空值比较不会产生额外信息的等值比较 <>:不等值 <: ...
- mysql的复杂查询_mysql复杂查询
所谓复杂查询,指涉及多个表.具有嵌套等复杂结构的查询.这里简要介绍典型的几种复杂查询格式. 一.连接查询 连接是区别关系与非关系系统的最重要的标志.通过连接运算符可以实现多个表查询.连接查询主要包括内 ...
- mysql rand() 子查询_MySQL ------ 子查询(十三)
查询(query):任何SQL 都是查询,但此术语一般指select 语句 子查询(subquery):嵌套在查询中的查询,MySQL4.1 引入对子查询的支持. 接下来得就比较有意思了,需要你对于表 ...
- mysql 最值复杂查询_MySQL高级查询
我们使用SQL查询不能只使用很简单.最基础的SELECT语句查询.如果想从多个表查询比较复杂的信息,就会使用高级查询实现.常见的高级查询包括多表连接查询.内连接查询.外连接查询与组合查询等,今天我们先 ...
- mysql 组合查询_MySQL组合查询教程
#MYSQL#这是我MySQL的第八篇教程.本篇主要介绍的是MySQL的组合查询的用法.在大多数的SQL查询中都只包含从一个或者多个表中返回数据的单条SELECT语句,MySQL其实也支持允许执行多条 ...
- 云数据库mysql 慢查询_Mysql慢查询
一.简介 开启慢查询日志,可以让MySQL记录下查询超过指定时间的语句,通过定位分析性能的瓶颈,才能更好的优化数据库系统的性能. 二.参数说明 slow_query_log 慢查询开启状态 slow_ ...
- mysql 分号子查询_MySQL子查询详解
子查询指一个查询语句嵌套在另一个查询语句内部的查询,这个特性从 MySQL 4.1 开始引入,在 SELECT 子句中先计算子查询,子查询结果作为外层另一个查询的过滤条件,查询可以基于一个表或者多个表 ...
- mysql分表全局查询_mysql如何查询多样同样的表/sql分表查询、java项目日志表分表的开发思路/按月分表...
之前开发的一个监控系统,数据库的日志表是单表,虽然现在数据还不大并且做了查询sql优化,不过以后数据库的日志表数据肯定会越来越庞大,将会导致查询缓慢,所以把日志表改成分表,日志表可以按时间做水平分表, ...
最新文章
- 从这篇YouTube论文,剖析强化学习在工业级场景推荐系统中的应用
- mysql5.5.9_mysql5.5.9字符集设置
- c#中SqlHelper类的编写(三)
- [BJDCTF2020]EasySearch
- Lesson 8.5 SOFTMAX回归
- 第三次学JAVA再学不好就吃翔(part104)--flush和close
- 陶哲轩对数学学习的一些建议
- socket网络编程tcp
- CVS配置过程 (部分转)
- (福利)中秋灯谜,猜中有奖
- [转载][工具]Eclipse Console 加大显示的行数,禁止弹出
- java.text.ParseException: Unparseable date:
- axure如何导出原件_彻底抛弃WORD!教你用Axure快速输出高质量的PRD
- shl归纳推理测试题库_笔经总结含征服shl功略
- 图像处理 图像识别 模式识别 分类检测
- 剑网三查询服务器角色信息,剑网三人物介绍
- 【牛客竞赛】Increasing Subsequence题解
- view设置圆角 android,Android 设置圆角View
- HTML径向效果,HTML Canvas实现径向渐变效果
- 安卓手机与Linux同步后,搜索文件内的内容
热门文章
- 一个HR人给应届生的面试建议,关于应届生面试自我介绍、常见问题及回答、面试礼仪、技巧等,非常全面、非常专业,面试前必看,晚了后悔呀。
- webots仿真机器人平台
- ubuntu 20.04 更改第一次登录紫色背景(终于有办法修改啦!!!)
- 为什么Git把SVN拍在了沙滩上?
- 计算机学业水平考试成绩查询系统,学业水平考试成绩查询系统登陆地址
- linux 串口 中断方式,设置在linux下串口中断(setting serial port interruption in
- httprunnermanager运行
- WSL无法启动【\\wsl$\Ubuntu-18.04无法访问。你可能没有权限使用网络资源。】
- 使用clickhouse时mysql表引擎从mysql获取数据时时区自动加八小时[已解决]
- Squirrel状态机-从原理探究到最佳实践