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

山东网站建设SEO优化制作设计公司淘宝网首页官网电脑版

山东网站建设SEO优化制作设计公司,淘宝网首页官网电脑版,建设银行网站怎么设置转账额度,做娱乐网站少10个页面文章目录 前言一、数据库表结构和样例数据二、排名操作1.普通排名2.无间隔排名3.有间隔排名 总结 前言 最近业务上碰到这样一个需求,需要对表按照某一个字段进行排序,并且将得到的排名写入对应的排名字段。这个需求于我而言确实没有遇到过,好…

文章目录

  • 前言
  • 一、数据库表结构和样例数据
  • 二、排名操作
    • 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,实现了跳跃:
在这里插入图片描述


总结

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

http://www.yayakq.cn/news/344466/

相关文章:

  • 制作网站在哪里临沂网站建
  • 有网址 有空间怎么做网站国外做二手服装网站
  • 连锁公司网站源码建设网站的申请信用卡
  • 企业网站个人备案企业网站更新什么内容
  • 门户网站建设工作制作和淘宝商城一样网站
  • 模板王网站官网wordpress热门吗
  • 昆山企业网站建设wordpress 页面 跳转
  • 台州建设企业网站网站设计模板下载
  • 个人网站的设计师wordpress免费申请
  • 网站快排是怎么做的聊城网站营销
  • 文山城乡建设部网站首页邯郸市魏县建设局网站
  • 西安免费做网站哪家好网站空间的管理
  • 外贸网站制作需求公司做网站广告语
  • 质感设计网站阿里云有了域名 网站建设
  • intitle:做网站平台运营推广
  • 手机app与电脑网站的区别上海中风险地区名单
  • 温州开发网站公司哪家好网站开发运营费用
  • 网站建设服务多少钱做ppt的动图下载哪些网站
  • 电商网站建设价格低公司推广网站建设话术
  • 莆田市建设局网站中山微信网站
  • iis怎么创建网站企业软件项目管理系统
  • 外贸网站导航栏建设技巧怎么编辑网站内容
  • 网站建设属于高新技术收入吗注册城乡规划师一年能挂多少钱
  • 网站建设资料总结网页图片自动轮换
  • 网站建设引领者Wordpress 报表的插件
  • 网站有免费的域名和空间么乌市建设工程质量监督站网站
  • 网站开发项目经理可免费注册的网站
  • 什么是展示型网站建设阿里快速建站
  • 做网站编辑有什么发展wordpress详细介绍
  • 制作系部网站首页购物网站开发的业务需求分析