MySQL中实现rank排名查询
MySQL中实现rank排名查询
- 1、基本知识:
- 2、升序排列,排名继续增加
- 3、降序排列,排名继续增加
- 4、升序排列,排名不跳级,继续+1,示例一
- 5、升序排列,排名不跳级,继续+1,示例二
- 6、升序排列,排名跳级+n
在MySQL中,不存在类似于SQL Server或Orcal等中的rank()函数来得到排名。
所以我们需要手动地写这个rank功能。
1、基本知识:
◎sql语句中,使用@来定义一个变量。如:@abc
◎sql语句中,使用:=来给变量赋值,如:@abc:=123,则变量abc的值为123
◎sql语句中,if(A,B,C)表示,如果A条件成立,那么执行B,否则执行C,如:
@abc := if(2>1,100,200)的结果是,abc的值为100:
◎case…when…then语句
case…when…then语句有两种情况:
case情况一(CASE 后面不带表达式):
CASE WHEN expression THEN 操作1
WHEN expression THEN 操作2.......ELSE 操作n
END
注:自上而下,凡是走了其中一个when或者是走了else了,其他的都不再走了。
case情况二(CASE 后面带表达式,此时WHEN 后面的则是该表达式可能的值):
CASE expression
WHEN expression的值1 THEN 操作1
WHEN expression的值2 THEN 操作2
.......ELSE 操作n
END
注:自上而下,凡是走了其中一个when或者是走了else了,其他的都不再走了。
MySQL中,手写rank示例
先创建一个tablle,并放入一些数据,如:
2、升序排列,排名继续增加
age升序排列(age相同时,排名继续增加),示例:
注:这里的(SELECT @curRank := 0) q 的作用是:在同一个select语句中给变量curRank赋初始值。效果等同于,两个sql语句,第一个先赋值,第二个再select:
3、降序排列,排名继续增加
age降序排列(age相同时,排名继续增加),示例:
4、升序排列,排名不跳级,继续+1,示例一
age升序排列(age相同时,排名相同;但是到下一个age不同时,排名不跳级,继续+1),示例一(case…when…then):
5、升序排列,排名不跳级,继续+1,示例二
age升序排列(age相同时,排名相同;但是到下一个age不同时,排名不跳级,继续+1),示例二if(a,b,c):
6、升序排列,排名跳级+n
age升序排列(age相同时,排名相同;但是到下一个age不同时,排名跳级+n),示例:
注:如果嫌查出来的列太多了,可以再对此结果进行select,如:
作者:justry_deng
来源:CSDN
原文:https://blog.csdn.net/justry_deng/article/details/80597916
MySQL中实现rank排名查询相关推荐
- MySQL中实现rank排名查询以及在Mybatis中使用 mysql 的自定义变量 @的问题解决
首先是想要对mysql数据库中查询到的列表数据进行一个排名,因为有分页排序等一堆条件就想着直接在sql上实现,但MySQL不存在类似于SQL Server或Orcal中的rank()函数,最终决定使用 ...
- mysql 排名_学会在MySQL中实现Rank高级排名函数,所有取前几名问题全部解决.
MySQL中没有Rank排名函数,当我们需要查询排名时,只能使用MySQL数据库中的基本查询语句来查询普通排名.尽管如此,可不要小瞧基础而简单的查询语句,我们可以利用其来达到Rank函数一样的高级排名 ...
- mysql rank_在MySQL中实现Rank高级排名函数
MySQL中没有Rank排名函数,当我们需要查询排名时,只能使用MySQL数据库中的基本查询语句来查询普通排名.尽管如此,可不要小瞧基础而简单的查询语句,我们可以利用其来达到Rank函数一样的高级排名 ...
- rank()函数 mysql_在MySQL中实现Rank高级排名函数
在MySQL中实现Rank高级排名函数 MySQL中没有Rank排名函数,当我们需要查询排名时,只能使用MySQL数据库中的基本查询语句来查询普通排名.尽管如此,可不要小瞧基础而简单的查询语句,我们可 ...
- 在MySQL中实现Rank高级排名函数
在MySQL中实现Rank高级排名函数 前言 用例表 1.在MySQL中实现普通排名 2.在MySQL中实现并列连续序号排名 3.在MySQL中实现并列非连续序号排名 4.随机获得一条数据 5.判断数 ...
- mysql over rank_sql - MySQL中的Rank函数
sql - MySQL中的Rank函数 我需要找出客户的排名. 在这里,我为我的要求添加了相应的ANSI标准SQL查询. 请帮我转换为MySQL. SELECT RANK() OVER (PARTIT ...
- 不同服务器数据库表连接查询修改,如何连接多个数据库,mysql中的服务器和查询两个表中的对方?...
我期待从不同服务器连接两个不同的数据库.此外,我想运行一个查询,从两个数据库中获取数据到一个单一的结果.我正在使用mysql在PHP脚本中执行此操作.这里是如何很期待做[没有成功:)]如何连接多个数据 ...
- 在MySQL中实现交叉表查询2(动态交叉表)
在MySQL中实现交叉表查询2(动态交叉表) 交叉表分为静态交叉表和动态交叉表.其中静态交叉表中的列是固定的,因此相对容易实现:而动态交叉表中的列需要动态生成. 一.静态交叉表的实现 参见上一篇文章: ...
- 在MySQL中实现交叉表查询1(静态交叉表)
在MySQL中实现交叉表查询1(静态交叉表) 一.什么是交叉表 交叉表查询是将来源于某个表中的字段进行分组,一组列在交叉表左侧,一组列在交叉表上部,并在交叉表行与列交叉处显示表中某个字段的各种计算值. ...
最新文章
- 如何把一个程序中 Edit 中的文本赋给另一个程序的 Edit ? - 回复 Disk_ 的问题
- 小师妹学JVM之:逃逸分析和TLAB
- BZOJ4237 JOISC2014 稻草人 CDQ分治、单调栈
- VS 2019 要来了,是时候了解一下 C# 8.0 新功能
- PMP读书笔记(第6章)
- 亿万富翁夏令营:库克、巴菲特等出席太阳谷峰会
- html的table属性笔记
- 解读ASP.NET 5 MVC6系列(11):Routing路由
- java数据结构与算法pdf下载
- 图论算法 若干定义
- 二维码收款系统即时到账个人码免签支付平台
- 目前最全的汉语拼音表 (另附韦氏拼音表, 非常规拼音表)
- 奈奎斯特与香农定理_奈奎斯特定理和香农定理解析
- android内存显示修改,涨姿势:修改这个系统选项Android手机再也不用清内存!速度飞起...
- 微信小程序设置解锁密码
- 一阶拟合算法C(六轴)
- 轮廓图编程-自定义QChartView
- ioredis pipeline用法
- 清道夫第一季/全集Ray Donovan迅雷下载
- [渲染层错误] ./pages/component/form.wxml not found
热门文章
- 《云云众声》第90期:久久不见 新年第90期有新精彩!
- 潭州学院html学习(day09)
- matlab绘图时将NaN或Inf设为透明色或特定颜色
- 中国能跑出来自己的Salesforce吗?
- 提取数据_基于众包的可视化图表数据提取
- 不义联盟网站无法连接服务器,不义联盟:人间之神无法连接服务器如何解决
- css语法,常用css语法,内部样式表,外部样式表,内联样式表, 样式优先级问题
- vscode 取消拉去变基_开发工具之 Git 篇
- 基于MATLAB改进Otsu阈值分割的车道线检测
- 1.5亿元融资,杉岩数据加速以数据为核心的新存储市场落地