`

MySQL 查询排名

阅读更多

参考:http://fellowtuts.com/mysql/query-to-obtain-rank-function-in-mysql

 

前段时间看到个帖子,是关于用 SQL 查询排名的。
那个帖子里针对的数据库是 Oracle,用到了 Oracle 自带的函数 RANK(或 DENSE_RANK)。
由于 MySQL 里没有相应的类似函数,所以写 SQL 会稍微繁琐一点。

参考文章的主要思路:

  • 对目标列排序
  • 设置一个变量作为排名值,在每条记录中自增 1

方案一

SQL: (如果想要降序排名,可以改成 ORDER BY age DESC


效果:(值相同,排名不同)

 

方案二

SQL: (

暂存上一条记录的 age (@prevRank)。

> 如果当前 age 与其相等,使用与前一记录相同的排名;

> 否则排名加一,并更新 @prevRank

)



效果:(值相同,排名也相同;排名值连续递增)


方案三

SQL: (

增加一个变量(@incRank)用于记录序号(类似方案一)。

> 如果当前 age 与上一条记录相同,使用与前一记录相同的排名(类似方案二)

> 否则使用序号(@incRank)




效果:(值相同,排名也相同;排名值递增不连续)

 

 

附数据:



 

  • 大小: 6.6 KB
  • 大小: 10.9 KB
  • 大小: 7.5 KB
  • 大小: 10.7 KB
  • 大小: 9 KB
  • 大小: 8.2 KB
  • 大小: 17.2 KB
0
0
分享到:
评论

相关推荐

    MySql基本查询、连接查询、子查询、正则表达查询讲解

    查询数据是指从数据库中的数据表或视图中获取所需要的数据,在mysql中,可以使用SELECT语句来查询数据。根据查询条件的不同,数据库系统会找到不同的数据。 SELECT语句的基本语法格式如下: [sql] view plain copy ...

    mysql代码-MySQL-查询成绩为第二名(第N名)的所有学生数据

    mysql代码-MySQL-查询成绩为第二名(第N名)的所有学生数据

    MySQL常用练手题目集合 MySQL查询练习题(50题) 共18页.pdf

    MySQL 查询练习(50题) MySQL 查询练习(50题) I 1 -- 建表 1 1.1 -- 学生表 1 1.2 -- 课程表 1 1.3 -- 教师表 1 1.4 -- 成绩表 2 1.5 -- 插入学生表测试数据 2 1.6 -- 课程表测试数据 2 1.7 -- 教师表测试数据 2 ...

    MYSQL实现排名及查询指定用户排名功能(并列排名功能)实例代码

    主要给大家介绍了关于MYSQL实现排名及查询指定用户排名功能(并列排名功能)的相关资料,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面来一起看看吧

    MySQL中给自定义的字段查询结果添加排名的方法

    主要介绍了MySQL中给自定义的字段查询结果添加排名的方法,只需要对counter写一个小算式,非常简单,需要的朋友可以参考下

    mysql面试题

    mysql面试题,经典sql语句.

    MYSQL题目练习

    --20、查询学生的总成绩并进行排名 --20.1 查询学生的总成绩 --21、查询不同老师所教不同课程平均分从高到低显示 --22、查询所有课程的成绩第2名到第3名的学生信息及该课程成绩 --26、查询每门课程被选修的学生数 ...

    MySQL查询部门工资前三高的所有员工

    0x01.需求 Employee 表包含所有员工信息,每个员工有其对应的工号 Id,姓名 Name,工资 Salary 和部门编号 DepartmentId 。 +----+-------+--------+--------------+ | Id | Name | Salary | DepartmentId | ...

    2017最新老男孩MySQL高级专业DBA实战课程全套【清晰不加密】,看完教程月入40万没毛病

    04-MySQL服务普通查询日志介绍及实践 05-MySQL服务慢查询日志介绍及实践 06-MySQL服务二进制日志的3种工作模式详细介绍 07-MySQL服务二进制日志的3种工作模式配置方法实战 第十部-老男孩MySQL常用引擎及优缺点-应用...

    MySQL页面访问统计及排名情况

    主要介绍了MySQL页面访问统计及排名情况,涉及到mysql页面访问统计,mysql统计排名相关知识,感兴趣的朋友一起学习吧

    mysql分组取每组前几条记录(排名) 附group by与order by的研究

    –按某一字段分组取最大(小)值所在行的数据 代码如下: /* 数据如下: nameval memo a 2 a2(a的第二个值) a 1 a1–a的第一个值 a 3 a3:a的第三个值 b 1 b1–b的第一个值 b 3 b3:b的第三个值 b 2 b2b2b2b2 b 4 b4b4 b ...

    Java项目:学生选课管理系统(java+Servlet+JSP+JavaScript+Mysql)

    各种查询(学生的单科成绩、总成绩、排名) 各种统计(统计及格率、统计80分以上的同学等) 管理端权限 登录系统 实现对学生的CURD 实现对老师的CURD 实现各种查询、统计 学完这个项目后的收获: 掌握项目开发的...

    mysql8.0.zip

    MySQL 8.0 是世界上最流行的开源关系型数据库管理系统之一。 特性和改进: JSON 支持:MySQL 8.0 引入了对 JSON 格式...Window Functions:MySQL 8.0 引入了窗口函数,可以执行类似于分析函数的计算,如排名、排序等。

    JAVA+mySQL成绩管理系统

    用java+mySQL做的成绩管理系统 本程序包括19个类文件,每个类文件只含有一个类,分别是包含main方法的主类 Main,实现登录功能的类 Login, 实现各种功能选择功能的类 Function, 实现数据库连接的类 DataBaseCreate, ...

    Mysql利用group by分组排序

    MySQL的group by与Oracle有所不同,查询得字段可以不用写聚合函数,查询结果取得是每一组的第一行记录。 利用上面的特点,可以利用mysql实现一种独特的排序; 首先先按某个字段进行order by,然后把有顺序的表进行...

    淘宝差评查询系统源码,淘宝信誉查询系统源码,淘宝买号查询源码[PHP+MYSQL]

    淘宝上现在有在卖的版本,大部分查询是调用其他站的,账户具体点数查询错误,其他查询,如排名等都是调用其他站的,调用站没问题,那么就没问题 1、首先打开根目录下 config.php 修改数据库登录用户名、密码、数据库...

    MySQL中的JOIN详解及sql实战

    用途:帮助读者了解MySQL中的JOIN操作,掌握LEFT JOIN、ON条件过滤和笛卡尔积的使用方法,从而在实际开发中灵活运用JOIN操作实现表关联查询。本文还提供了扩展内容,如排名等应用场景,帮助读者进一步理解JOIN操作的...

    基于Vue+SpringBoot+MySQL的海南旅游推荐系统.zip

    基于协同推荐算法,包括用户网页和管理后台,包含景点类型模块、旅游景点模块、行程推荐模块、美食推荐模块、景点排名模块,还包含系统自带的用户管理、部门管理、角色管理、菜单管理、日志管理、数据字典管理、文件...

    排名查询语句myql.sql

    排名查询语句,顺序查询,分组内查询; 排名查询语句,顺序查询,分组内查询; 排名查询语句,顺序查询,分组内查询;

Global site tag (gtag.js) - Google Analytics