返回顶部
首页 > 资讯 > 数据库 >mysql使用自定义序列实现row_number功能(步骤详解)
  • 610
分享到

mysql使用自定义序列实现row_number功能(步骤详解)

2024-04-02 19:04:59 610人浏览 安东尼
摘要

看了一些文章,终于知道该怎么在 Mysql 里面实现 row_number() 排序 话不多说,show you the code: 第一步:建表: create table g

看了一些文章,终于知道该怎么在 Mysql 里面实现 row_number() 排序

话不多说,show you the code:

第一步:建表:


create table grades(
`name` varchar(10),
`subject` varchar(10),
`score` int(10)
)

第二步:写入数据


insert into grades(name, subject, score)
values('小明', '语文', 85),
('小华', '语文', 89),
('小李', '语文', 91),
('小芳', '语文', 93),
('小明', '数学', 77),
('小华', '数学', 95),
('小李', '数学', 83),
('小芳', '数学', 88),
('小明', '英语', 90),
('小华', '英语', 92),
('小李', '英语', 85),
('小芳', '英语', 88)

数据如下:

第三步:
需求:找出各科目单科第二的同学

首先,先排序:


select name, subject, score 
from grades
order by subject, score desc

数据如下:

然后,每个科目按照分组排序


select (@i:=case when @subject_pre=t1.subject then @i+1 else 1 end) as rn,
t1.*,
(@subject_pre:=subject) 
from (
    select name, subject, score 
    from grades
    order by subject, score desc
) t1, 
(select @i:=0, @subject_pre:='') as t2
group by subject, score
order by subject, score desc

解释一下:
添加一个比较项 subject_pre, 记录前一个科目是什么。
再加上一个自增的序列,实现index+1的功能。
因为数据已经是有序的,如果指向的科目和存储的前一个科目相同,那么序号+1,否则的话,序号从1开始重新计算。
这样就实现了分组排序。

最后,把 rn=2 的数据取出来


select name, subject, score from(
select (@i:=case when @subject_pre=t1.subject then @i+1 else 1 end) as rn,
t1.name,
t1.subject,
t1.score,
(@subject_pre:=subject) 
from (
select name, subject, score 
from grades
order by subject, score desc
) t1, 
(select @i:=0, @subject_pre:='') as t2
group by subject, score
order by subject, score desc
) t
where rn=2

最后结果如下:

这样就使用mysql实现了row_number()的功能。

在网上找的资料,很多没写清楚,这里特地用一个示例把这个实现讲清楚了,希望对你有帮助!

到此这篇关于mysql使用自定义序列实现row_number功能的文章就介绍到这了,更多相关mysql row_number功能内容请搜索编程网以前的文章或继续浏览下面的相关文章希望大家以后多多支持编程网!

您可能感兴趣的文档:

--结束END--

本文标题: mysql使用自定义序列实现row_number功能(步骤详解)

本文链接: https://lsjlt.com/news/160502.html(转载时请注明来源链接)

有问题或投稿请发送至: 邮箱/279061341@qq.com    QQ/279061341

猜你喜欢
  • mysql使用自定义序列实现row_number功能(步骤详解)
    看了一些文章,终于知道该怎么在 mysql 里面实现 row_number() 排序 话不多说,show you the code: 第一步:建表: create table g...
    99+
    2024-04-02
  • SpringBoot自定义Redis实现缓存序列化详解
    目录1、自定义RedisTemplate1.1、Redis API默认序列化机制1.2、自定义RedisTemplate序列化机制1.3、效果测试2、自定义RedisCacheMan...
    99+
    2024-04-02
  • MySQL自定义序列数的实现方式
    目录mysql自定义序列数实现创建序列表插入定义的序列自定义函数实现MyBATis中调用函数来获取最新序列数MySQL添加自定义的序列使用实例总结MySQL自定义序列数实现 往往有很多情况下,我们需要使用自己生成的唯一I...
    99+
    2022-12-28
    MySQL自定义序列数 自定义序列数 MySQL自定义序列
  • Java自定义实现链队列详解
    一、写在前面        数据结构中的队列应该是比较熟悉的了,就是先进先出,因为有序故得名队列,就如同排队嘛,在对尾插入新的节点,在对首删除节点.jdk集合框...
    99+
    2023-05-30
    java 链队列 ava
  • vue3使用自定义指令实现eldialog拖拽功能示例详解
    目录实现el-dialog的拖拽功能通过自定义指令实现拖拽功能实现拖拽功能使用方式实现el-dialog的拖拽功能 这里指的是 element-plus 的el-dialog组件,一...
    99+
    2024-04-02
  • iOS如何自定义步骤进度条实例详解
    前言 最近新项目要做入驻功能,其中包括一个入住流程,类似登录或者注册流程如下图。 之前想着用自己绘图来做,可是又懒不想多写代码,所以就想着能不能用进度条来做。 实现方法如下: 用进...
    99+
    2022-05-26
    ios 自定义 进度条
  • Vue实现导入Excel功能步骤详解
    1.前端主导实现步骤 第一步,点击页面上的导入按钮,读入Excel文件 利用插件完成。 第二步,按照后端的要求对数据格式加工,转成他们需要的格式 需要自己写逻辑。 第三步,通过后端接...
    99+
    2024-04-02
  • asp.net怎么使用原生控件实现自定义列导出功能
    本篇内容主要讲解“asp.net怎么使用原生控件实现自定义列导出功能”,感兴趣的朋友不妨来看看。本文介绍的方法操作简单快捷,实用性强。下面就让小编来带大家学习“asp.net怎么使用原生控件实现自定义列导出功能”吧!自定义列实现最近负责开发...
    99+
    2023-06-28
  • asp.net使用原生控件实现自定义列导出功能的方法
    目录自定义列实现尝试一尝试二总结自定义列实现 最近负责开发公司内部使用的人事信息化系统时,有一个需求是这样的,需要在页面中可以用户每次导出Excel时自定义需要导出哪些列,经过半天的...
    99+
    2024-04-02
  • Android自定义ListView实现仿QQ可拖拽列表功能
    我们大致的思路,其实是这样子的,也是我的设想,我们可以先去实现一个简单的ListView的数据,但是他的Adapter,我们可以用系统封装好的,然后传递进去一个实体类,最后自定...
    99+
    2022-06-06
    列表 listview Android
  • 微信小程序系列之如何实现自定义顶部导航功能
    这篇文章主要为大家展示了“微信小程序系列之如何实现自定义顶部导航功能”,内容简而易懂,条理清晰,希望能够帮助大家解决疑惑,下面让小编带领大家一起研究并学习一下“微信小程序系列之如何实现自定义顶部导航功能”这...
    99+
    2024-04-02
  • Android自定义Spinner下拉列表(使用ArrayAdapter和自定义Adapter实现)
    今天学习了Spinner组件的使用,非常好用的一款组件,相当于从下拉列表中选择项目,今天收获颇多,下面给大家演示一下Spinner的使用(分别使用ArrayAdapter和自定...
    99+
    2022-06-06
    列表 arrayadapter spinner Android
  • PHP实现简单搜索功能的步骤详解
    PHP是一种广泛应用于Web开发的服务器端脚本语言,其强大的特性和灵活性使其成为许多网站和应用程序的首选。在许多Web应用程序中,搜索功能是必不可少的一部分,能够帮助用户快速找到需要的...
    99+
    2024-03-06
    搜索 php 步骤 sql语句
  • 怎么用javascript实现自定义事件功能
    这篇文章主要介绍“怎么用javascript实现自定义事件功能”的相关知识,小编通过实际案例向大家展示操作过程,操作方法简单快捷,实用性强,希望这篇“怎么用javascript实现自定义事件功能”文章能帮助大家解决问题。概述自定义事件很难派...
    99+
    2023-06-17
  • 微信小程序自定义组件实现单选功能
    本文实例为大家分享了微信小程序自定义组件实现单选的具体代码,供大家参考,具体内容如下 效果图: 调用部分(例如在index页面) index.wxml <view catch...
    99+
    2024-04-02
  • 微信小程序自定义组件实现多选功能
    本文实例为大家分享了微信小程序自定义组件实现多选的具体代码,供大家参考,具体内容如下 效果图: 调用部分(例如在index页面) index.wxml <view catch...
    99+
    2024-04-02
  • MySQL数据库中怎么实现序列自增功能
    MySQL数据库中怎么实现序列自增功能,相信很多没有经验的人对此束手无策,为此本文总结了问题出现的原因和解决方法,通过这篇文章希望你能解决这个问题。1、创建sequence表CREATE TABL...
    99+
    2024-04-02
  • 解释Netdata中监控自定义应用程序日志的步骤
    在Netdata中监控自定义应用程序日志的步骤如下: 安装Netdata:首先,需要在您的服务器上安装Netdata。您可以通过下载源代码并手动安装或使用包管理器进行安装。 配置Netdata:在安装完成后,您需要配置Netdata...
    99+
    2024-06-04
    netdata
  • SpringAOP实现日志收集管理功能(步骤详解)
    第一步引入必要的依赖 <dependency> <groupId>org.springframework.boot</grou...
    99+
    2024-04-02
  • 用Python实现简单的人脸识别功能步骤详解
    前言 让我的电脑认识我,我的电脑只有认识我,才配称之为我的电脑! 今天,我们用Python实现简单的人脸识别技术! Python里,简单的人脸识别有很多种方法可以实现,依赖于pyth...
    99+
    2024-04-02
软考高级职称资格查询
编程网,编程工程师的家园,是目前国内优秀的开源技术社区之一,形成了由开源软件库、代码分享、资讯、协作翻译、讨论区和博客等几大频道内容,为IT开发者提供了一个发现、使用、并交流开源技术的平台。
  • 官方手机版

  • 微信公众号

  • 商务合作