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

新注册公司网站建设湖南正规seo优化报价

新注册公司网站建设,湖南正规seo优化报价,仿魔酷阁网站源码,免费行情软件app网站大全下载有图片文章目录 前言一、数据库表结构和样例数据二、排名操作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/138409/

相关文章:

  • 义乌外贸网站建设加盟网络推广方案怎么写
  • 专业的盐城网站建设wordpress有一个100的缩略图
  • 正规手机网站建设平台网站题头是什么
  • 重庆做网站 外包公司微信指数查询
  • 中山做网站价格wordpress增加图片轮播
  • 营销型企业网站项目策划表外贸公司网站案例
  • 毕节网站网站建设网站如何防止被攻击
  • 网站备案信息被工信部删除58同城的网站建设
  • php做的网站建设亚马逊注册没有公司网站怎么做
  • 莱芜警方网站官网北京百度推广公司
  • 怎么做属于自己的音乐网站手机版网站模板
  • 企业网站招聘可以怎么做外贸网站建设定制开发
  • 可以做线路板网站的背景图有哪些网站可以做ppt
  • 邯郸手机网站开发价格快速做效果图的网站叫什么软件
  • 网站制作哪家专业贵州小程序制作开发
  • 中信建设 官方网站深圳购物商城网站设计
  • 制作一个网站的费用ps切片做网站
  • 怎样创建音乐网站全国网站设计排名
  • 做网站怎么开发程序信息化建设 网站建设等方面
  • 秦皇岛开发区建设局网站企业宣传网站模板下载
  • 个人网站意义建站模板与网站案例展示
  • 做网站主流网站p2f网站系统
  • A华企网络网站建设博物馆设计公司排名
  • 阿里云服务器618seo口碑优化
  • 照片展示网站模板免费下载notepad wordpress
  • 网站名称和备案公司名称不一样在虚拟主机上建设多个网站
  • 贵阳企业网站模板武威建设厅网站
  • 做的网站在不同浏览器做网站一般收取多少钱
  • 做pc端网站案例织梦收费
  • 公司做网站需要准备什么资料华为手机WordPress