当前位置: 首页 > news >正文

Mysql实现对某一字段排序并将排名写入另一字段

文章目录

  • 前言
  • 一、数据库表结构和样例数据
  • 二、排名操作
    • 1.普通排名
    • 2.无间隔排名
    • 3.有间隔排名
  • 总结


前言

  最近业务上碰到这样一个需求,需要对表按照某一个字段进行排序,并且将得到的排名写入对应的排名字段。这个需求于我而言确实没有遇到过,好在试着摸索一番得以解决,故写博客记录一下。


一、数据库表结构和样例数据

  本文中我们创建一张简单的成绩表来进行测试,表的结构和数据也很简单,这里不再赘述,直接放代码:

CREATE TABLE `grades` (`id` int(11) NOT NULL AUTO_INCREMENT,`grade` int(11) DEFAULT NULL,`rankNum` int(11) DEFAULT NULL,PRIMARY KEY (`id`)
) ENGINE=InnoDB AUTO_INCREMENT=9 DEFAULT CHARSET=utf8mb4;
INSERT into grades (grade) VALUE (87);
INSERT into grades (grade) VALUE (100);
INSERT into grades (grade) VALUE (95);
INSERT into grades (grade) VALUE (87);
INSERT into grades (grade) VALUE (45);
INSERT into grades (grade) VALUE (67);
INSERT into grades (grade) VALUE (75);
INSERT into grades (grade) VALUE (87);

创建表之后我们插入8条数据进行测试,当然,我们的排名字段暂时是为空的,最终效果如图:
在这里插入图片描述

二、排名操作

1.普通排名

普通排名就是指所有数据按其规则进行排序,尽管出现数据相同的情况,也依然存在先后顺序。

UPDATEgrades g1 INNER JOIN (SELECT id, grade,@rank := @rank + 1 AS ranking
FROM(SELECT @rank := 0) r,grades
ORDER BYgrade DESC) g2
ON g1.id = g2.id SET g1.rankNum = g2.ranking;

运行结果如图,我们也能看出排名确实是按照降序排列,而且分数相同的排名依然是有序的:
在这里插入图片描述

2.无间隔排名

无间隔排名就是指当存在相同数据时,我们希望它们的排名是一样的,就比如2,2,3这组数据,最终的排名效果是1,1,2;其中3这个数据的排名并没有因为前面占有两个数据而变成3,这我们称无间隔。

UPDATEgrades g1 INNER JOIN (SELECT id, grade,(CASEWHEN @prevRank = grade THEN @currankWHEN @prevRank := grade THEN @currank := @currank + 1END) AS ranking
FROM(SELECT @prevRank := NULL, @currank := 0) r,grades
ORDER BYgrade DESC) g2
ON g1.id = g2.id SET g1.rankNum = g2.ranking;

运行结果如图,我们可以看出分数相同的87排名都是一样的,而在87之后的75的排名依然是4没有跳跃:

在这里插入图片描述

3.有间隔排名

这个排名规则是我业务上真正需要的,所谓的有间隔就是比如之前的例子2,2,3,那么最后的排名结果是1,1,3;这里的数据3不再是2了,会因为占有问题而跳跃。

UPDATEgrades g1 INNER JOIN (SELECT id, grade,@currank := IF(@prevRank = grade, @currank, @rowrank) AS ranking,@rowrank := @rowrank + 1,@prevRank := grade
FROM(SELECT @prevRank := NULL, @currank := 0, @rowrank := 1) r,grades
ORDER BYgrade DESC) g2
ON g1.id = g2.id SET g1.rankNum = g2.ranking;

运行结果如图,我们可以看出此时的75已然变成了6,实现了跳跃:
在这里插入图片描述


总结

  希望这篇博客对大家有所帮助!!!

相关文章:

Mysql实现对某一字段排序并将排名写入另一字段

文章目录 前言一、数据库表结构和样例数据二、排名操作1.普通排名2.无间隔排名3.有间隔排名 总结 前言 最近业务上碰到这样一个需求,需要对表按照某一个字段进行排序,并且将得到的排名写入对应的排名字段。这个需求于我而言确实没有遇到过,好…...

vector容器 [上]

目录 一、 对于vector的介绍 二、vector的定义 0x01 无参构造 0x02 构造并初始化n个val 0x03 使用迭代器进行初始化构造 0x04 拷贝构造 0x05 比较 三、 vector的遍历 0x01 push_back() 0x02 operator[] 和at() 0x03 遍历 四、vector 容量空间 0x01 max_size : 返回v…...

React Native技术探究:开发高质量的跨平台移动应用的秘诀

作为一个跨平台移动应用开发框架,React Native在开发过程中能够有效提高开发效率、降低开发成本、缩短上线时间,因此备受开发者的欢迎。然而,如何使用React Native开发出高质量的跨平台移动应用呢?本文将探究这个问题,…...

C语言函数大全-- w 开头的函数(2)

C语言函数大全 本篇介绍C语言函数大全-- w 开头的函数 1. wcstok 1.1 函数说明 函数声明函数功能wchar_t *wcstok(wchar_t *wcs, const wchar_t *delim, wchar_t **ptr);用于将一个长字符串拆分成几个短字符串(标记),并返回第一个标记的地…...

kafka启动创建topic报错:zookeeper is not a recognized option

当前使用版本:kafka_2.13-3.4.0 使用老版本的创建topic的命令,是用zookeeper来创建,但是报错如下 D:\Software\Doument\kafka_2.13-3.4.0> .\bin\windows\kafka-topics.bat --create --zookeeper localhost:2181 --replication-factor 1 …...

11个超好用的SVG编辑工具

SVG的优势在于SVG图像可以更加灵活,自由收缩放大而不影响图片的质量,一个合适的SVG编辑工具能够让你的设计事半功倍,下面就一起来看看这些冷门软件好用在哪里。这11个超好用的SVG编辑工具依次为:即时设计、Justinmind、Sketsa SVG…...

低代码平台:10分钟从入门到原理

导航目录 一、低代码概念 二、优势及局限 三、基础功能及搭建 1、业务流程 2、用户权限 3、统计图表 四、使用感受 五、总结 传统的软件研发方式目前并不能很好地满足企业的需求:人员成本高、研发时间长、运维复杂。这时低代码工具的出现为快速开发软件提供…...

【JavaScript】如何获取客户端IP地址?

使用这个库:request-ip 它按照如下顺序获取请求的IP地址: X-Client-IPX-Forwarded-For (Header may return multiple IP addresses in the format: “client IP, proxy 1 IP, proxy 2 IP”, so we take the first one.)CF-Connecting-IP (Cloudflare)F…...

数据科学中使用的17 种相似性和相异性度量之欧氏距离

目录 1简介 2距离函数 2.1 L2范数(欧氏距离) 1简介 在数据科学中,相似性度量是一种衡量数据样本如何相互关联或相互接近的方法。另一方面,相异性度量是告诉数据对象有多少是不同的。此外,当相似的数据样本被分组到一…...

朋友去华为面试,轻松拿到30K的Offer,羡慕了......

最近有朋友去华为面试,面试前后进行了20天左右,包含4轮电话面试、1轮笔试、1轮主管视频面试、1轮hr视频面试。 据他所说,80%的人都会栽在第一轮面试,要不是他面试前做足准备,估计都坚持不完后面几轮面试。 其实&…...

MySQL入门第五课:数据更新

数据更新 1 插入 插入表数据 insert into 表名 (字段列表) values(值列表) insert into 表名 set 字段名1 值1,字段名2值2 插入多个数据 insert into 表名 values(值1,值2,值3.....) 这里面的值与列索引是对应的 显示表数据 select * fr…...

ALSA子系统(十八)------指纹解锁动画提示声卡顿问题解析

你好!这里是风筝的博客, 欢迎和我一起交流。 很久没写kernel相关的东西了,主要是来到手机厂之后,大部分还是在Android上,Kernel虽然也有涉及,但毕竟只是有所涉及,主要业务逻辑还是在HAL之上&am…...

[230513] TPO72 | 2022年托福阅读真题第1/36篇 | 10:45

Invading Algae 目录 Invading Algae 全文 题目 Paragraph 1 P1 段落大意 问题1 Paragraph 2 P2 段落大意 问题2 *问题3* Paragraph 3 P3 段落大意 问题4 Paragraph 4 P4 段落大意 Paragraph 5 P5 段落大意 *问题5* *问题6* 问题7 问题8 问题9…...

操作符详解

目录 操作符分类 算术操作符 - * / % 二进制 二进制总结 移位操作符&#xff08;操作数只能为整数&#xff09; << >> 位操作符&#xff08;操作数必须为整数&#xff09; & | ^ 面试题 赋值操作符 复合赋值符 单目操作符 单目操作符介绍…...

【MATLAB图像处理实用案例详解(16)】——利用概念神经网络实现手写体数字识别

目录 一、问题描述二、概念神经网络实现手写体数字识别原理三、算法步骤3.1 数据输入3.2 特征提取3.3 模型训练3.4 测试 四、运行结果 一、问题描述 手写体数字属于光学字符识别&#xff08;Optical Character Recognition&#xff0c;OCR&#xff09;的范畴&#xff0c;但分类…...

数据库管理-第六十九期 另一种累(20230422)

数据库管理 2023-04-22 第六十九期 另一种累1 国产数据库沟通2 问题3 我的建议总结 第六十九期 另一种累 Oracle 23c的相关内容先缓缓&#xff0c;有些数据库管理相关的还是得正式版发布后才好去做实验。这周相较于之前那种割接较多的累还有点不一样&#xff0c;这周陪着客户交…...

Cesium入门之六:Cesium加载影像图层(ArcGIS、Bing、Mapbox、高德地图、腾讯地图、天地图等各类影像图)

Cesium加载影像图层 一、ImageryLayer类常用属性常用方法 二、ImageryLayerCollection类常用属性常用方法 三、ImageryProvider类常用属性常用方法 四、ImageryProvider子类1. ArcGisMapServerImageryProvider加载ArcGIS地图服务 2. BingMapsImageryProvider加载BingMap地图服务…...

Redis系列--redis持久化

一、为什么需要持久化 redis本身运行时数据保存在内存中&#xff0c;如果不进行持久化&#xff0c;那么在redis出现非正常原因宕机或者关闭redis的进程或者关闭计算机后数据肯定被会操作系统从内存中清掉。当然&#xff0c;redis本身默认采用了一种持久化方式&#xff0c;即RD…...

在外Windows远程连接MongoDB数据库【无公网IP】

文章目录 前言1. 安装数据库2. 内网穿透2.1 安装cpolar内网穿透2.2 创建隧道映射2.3 测试随机公网地址远程连接 3. 配置固定TCP端口地址3.1 保留一个固定的公网TCP端口地址3.2 配置固定公网TCP端口地址3.3 测试固定地址公网远程访问 转载自远程内网穿透的文章&#xff1a;公网远…...

学网络安全怎么挖漏洞?怎么渗透?

前言 有不少阅读过我文章的伙伴都知道&#xff0c;我从事网络安全行业已经好几年&#xff0c;积累了丰富的经验和技能。在这段时间里&#xff0c;我参与了多个实际项目的规划和实施&#xff0c;成功防范了各种网络攻击和漏洞利用&#xff0c;提高了安全防护水平。 也有很多小…...

第十二节:老旧系统改造——如何安全地让 AI 介入遗留代码(Legacy Code)重构?

引言 承接上一章对自动化编程安全的探讨,本章聚焦企业中最为棘手的遗留代码(Legacy Code)改造难题。面对缺乏文档、结构混乱的老旧系统,直接让AI“重新编写”往往导致更多隐患,本章将探讨如何安全、稳妥地引入AI进行重构。 核心理论 遗留代码大多缺乏设计文档、单元测试…...

爬虫风控实战:当你的代理IP被数美滑块盯上时,如何优雅破解?

爬虫风控对抗新思路&#xff1a;从数美滑块破解到系统性防御策略 滑块验证码已经成为现代爬虫工程师最头疼的障碍之一。当你精心设计的爬虫程序突然陷入"无限滑块"的循环&#xff0c;或是代理IP池被数美系统精准识别时&#xff0c;那种挫败感不言而喻。但真正的挑战不…...

10个Storybook最佳实践技巧:LearnStorybook.com核心经验分享

10个Storybook最佳实践技巧&#xff1a;LearnStorybook.com核心经验分享 【免费下载链接】learnstorybook.com Static site and content for Storybook tutorials 项目地址: https://gitcode.com/gh_mirrors/le/learnstorybook.com Learn Storybook是一个专注于教授开发…...

2026年最新风淋室厂家排名:净化工程优选这3家源头工厂

2026年最新风淋室厂家排名&#xff1a;净化工程优选这3家源头工厂在净化工程领域&#xff0c;风淋室作为保障洁净环境的关键设备&#xff0c;其质量和性能至关重要。2026年&#xff0c;市场上众多风淋室厂家竞争激烈&#xff0c;经过综合评估&#xff0c;为净化工程优选出以下3…...

Vitis HLS Schedule Viewer保姆级解读:从代码到硬件调度,一张图看懂你的设计瓶颈

Vitis HLS Schedule Viewer深度解析&#xff1a;从图形化调度到性能瓶颈精准定位 在FPGA加速设计领域&#xff0c;Vitis HLS作为高层次综合工具&#xff0c;能够将C/C代码转换为高效的硬件描述语言。然而&#xff0c;当设计遇到性能瓶颈时&#xff0c;开发者往往陷入报告数据的…...

Python 基础教程:列表(第9篇)

什么是列表&#xff1f; 在python中列表&#xff08;list&#xff09;是一种有序、可变的数据类型&#xff0c;可以存储任意类型的对象&#xff08;整数、浮点数、字符串甚至其他列表&#xff09;&#xff0c;使用方括号[]定义&#xff0c;元素之间用逗号分隔。 特点&#xff1…...

SpringBoot2项目信创改造:东方通TongWeb嵌入式版集成实战

1. 为什么选择东方通TongWeb嵌入式版 最近几年&#xff0c;国产化信创改造成为很多企业技术升级的重点方向。作为技术负责人&#xff0c;我在实际项目中遇到了从Tomcat迁移到国产应用服务器的需求。经过多方对比&#xff0c;最终选择了东方通TongWeb嵌入式版&#xff0c;这里分…...

遗传算法优化技巧:如何用PMX交叉提升Python求解效率

遗传算法优化实战&#xff1a;PMX交叉在Python中的高效实现与调优 当你在解决旅行商问题(TSP)或排班优化时&#xff0c;是否遇到过传统交叉算子导致无效解激增的情况&#xff1f;部分匹配交叉(PMX)正是为解决这类排列编码问题而生的利器。作为遗传算法中最高效的交叉算子之一&a…...

深入解析ioremap:从内存映射到页表属性

1. ioremap基础概念与使用场景 第一次接触ioremap是在调试一块PCIe采集卡的时候。当时需要在Linux驱动中访问设备的寄存器空间&#xff0c;直接使用物理地址会引发段错误。同事轻描淡写地说&#xff1a;"用ioremap映射一下就行"。这个看似简单的接口背后&#xff0c;…...

小白程序员入门网络安全:收藏版,从零开始学密码学

小白程序员入门网络安全&#xff1a;收藏版&#xff0c;从零开始学密码学 本文带领读者进入网络安全的世界&#xff0c;从密码学的发展历史、古典密码、分组密码、流密码、杂凑函数到公钥密码&#xff0c;全面介绍了密码学的基础知识和应用。文章涵盖了凯撒密码、维吉尼亚密码…...