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排名查询相关推荐

  1. MySQL中实现rank排名查询以及在Mybatis中使用 mysql 的自定义变量 @的问题解决

    首先是想要对mysql数据库中查询到的列表数据进行一个排名,因为有分页排序等一堆条件就想着直接在sql上实现,但MySQL不存在类似于SQL Server或Orcal中的rank()函数,最终决定使用 ...

  2. mysql 排名_学会在MySQL中实现Rank高级排名函数,所有取前几名问题全部解决.

    MySQL中没有Rank排名函数,当我们需要查询排名时,只能使用MySQL数据库中的基本查询语句来查询普通排名.尽管如此,可不要小瞧基础而简单的查询语句,我们可以利用其来达到Rank函数一样的高级排名 ...

  3. mysql rank_在MySQL中实现Rank高级排名函数

    MySQL中没有Rank排名函数,当我们需要查询排名时,只能使用MySQL数据库中的基本查询语句来查询普通排名.尽管如此,可不要小瞧基础而简单的查询语句,我们可以利用其来达到Rank函数一样的高级排名 ...

  4. rank()函数 mysql_在MySQL中实现Rank高级排名函数

    在MySQL中实现Rank高级排名函数 MySQL中没有Rank排名函数,当我们需要查询排名时,只能使用MySQL数据库中的基本查询语句来查询普通排名.尽管如此,可不要小瞧基础而简单的查询语句,我们可 ...

  5. 在MySQL中实现Rank高级排名函数

    在MySQL中实现Rank高级排名函数 前言 用例表 1.在MySQL中实现普通排名 2.在MySQL中实现并列连续序号排名 3.在MySQL中实现并列非连续序号排名 4.随机获得一条数据 5.判断数 ...

  6. mysql over rank_sql - MySQL中的Rank函数

    sql - MySQL中的Rank函数 我需要找出客户的排名. 在这里,我为我的要求添加了相应的ANSI标准SQL查询. 请帮我转换为MySQL. SELECT RANK() OVER (PARTIT ...

  7. 不同服务器数据库表连接查询修改,如何连接多个数据库,mysql中的服务器和查询两个表中的对方?...

    我期待从不同服务器连接两个不同的数据库.此外,我想运行一个查询,从两个数据库中获取数据到一个单一的结果.我正在使用mysql在PHP脚本中执行此操作.这里是如何很期待做[没有成功:)]如何连接多个数据 ...

  8. 在MySQL中实现交叉表查询2(动态交叉表)

    在MySQL中实现交叉表查询2(动态交叉表) 交叉表分为静态交叉表和动态交叉表.其中静态交叉表中的列是固定的,因此相对容易实现:而动态交叉表中的列需要动态生成. 一.静态交叉表的实现 参见上一篇文章: ...

  9. 在MySQL中实现交叉表查询1(静态交叉表)

    在MySQL中实现交叉表查询1(静态交叉表) 一.什么是交叉表 交叉表查询是将来源于某个表中的字段进行分组,一组列在交叉表左侧,一组列在交叉表上部,并在交叉表行与列交叉处显示表中某个字段的各种计算值. ...

最新文章

  1. 如何把一个程序中 Edit 中的文本赋给另一个程序的 Edit ? - 回复 Disk_ 的问题
  2. 小师妹学JVM之:逃逸分析和TLAB
  3. BZOJ4237 JOISC2014 稻草人 CDQ分治、单调栈
  4. VS 2019 要来了,是时候了解一下 C# 8.0 新功能
  5. PMP读书笔记(第6章)
  6. 亿万富翁夏令营:库克、巴菲特等出席太阳谷峰会
  7. html的table属性笔记
  8. 解读ASP.NET 5 MVC6系列(11):Routing路由
  9. java数据结构与算法pdf下载
  10. 图论算法 若干定义
  11. 二维码收款系统即时到账个人码免签支付平台
  12. 目前最全的汉语拼音表 (另附韦氏拼音表, 非常规拼音表)
  13. 奈奎斯特与香农定理_奈奎斯特定理和香农定理解析
  14. android内存显示修改,涨姿势:修改这个系统选项Android手机再也不用清内存!速度飞起...
  15. 微信小程序设置解锁密码
  16. 一阶拟合算法C(六轴)
  17. 轮廓图编程-自定义QChartView
  18. ioredis pipeline用法
  19. 清道夫第一季/全集Ray Donovan迅雷下载
  20. [渲染层错误] ./pages/component/form.wxml not found

热门文章

  1. 《云云众声》第90期:久久不见 新年第90期有新精彩!
  2. 潭州学院html学习(day09)
  3. matlab绘图时将NaN或Inf设为透明色或特定颜色
  4. 中国能跑出来自己的Salesforce吗?
  5. 提取数据_基于众包的可视化图表数据提取
  6. 不义联盟网站无法连接服务器,不义联盟:人间之神无法连接服务器如何解决
  7. css语法,常用css语法,内部样式表,外部样式表,内联样式表, 样式优先级问题
  8. vscode 取消拉去变基_开发工具之 Git 篇
  9. 基于MATLAB改进Otsu阈值分割的车道线检测
  10. 1.5亿元融资,杉岩数据加速以数据为核心的新存储市场落地