分享好友 最新动态首页 最新动态分类 切换频道
【mysql 】mysql 获取排列序号
2024-12-29 21:17

在进入正题之前先来了解一个mysql中的小知识点:

【mysql 】mysql 获取排列序号

①   :== 的区别

:=   赋值的意思。在set update select 中表示赋值的意思,用的比较少一般都用=,但是在用变量实现行号时(比如本文标题获取排列序号),一定要用:=。

 =   等于的意思,只有当set 和 update时,和:=的意思是一样的,表示赋值,其余情况都是等于的意思。

用户变量 @

@rank 是对一个叫rank的参数进行赋值。对用户变量赋值有两种方式,一种直接用"="另一种用":="。其区别在于使用set命令对用户变量赋值时,两种方式都可以使用;当使用select语句对用户变量进行赋值时,只能使用“:=”方式,因为在select语句中,“=”被看做是比较操作符。

好了,现在进入正题。

1、根据某字段按序排列并获取排序号。

先写一个小例子:


这个sql的作用是将日志创建时间在2017.09.01之前的日志按访问量进行倒序排序,并返回序号。(当访问量相同的时候,按正常顺序,继续排序)。

运行结果如下:


这句话其实就是将rank赋值0,从零开始加1编号,上面两种写法都可以。

用set的那种方法我也列出来一下,


所以,获取排序序号还是很简单的,基本上都是固定的方式,里面一层select是正常的sql排序的语句,外面一层是对查到的已排好序的数据列进行rank自增的操作,所以一开始@rank:=0。

其中需要注意的一点是,当排名相同时,想让序号也一样该怎么办,比如上面的查询结果id为1707101100和1711131423的访问次数都是3,上面的sql是将他们按序继续编号的,要是想编号相同可以这样解决:

2、根据某字段按序排列获取排序号,且当该字段的值存在多个相同的记录时,则相同值排序号相同。


运行结果:

从上面的sql语句可以看出多了一句case函数,(rowtotal表示count)根据情况对rank进行赋值,当rowtotal等于count时,序号就是rank,当rowtotal正常赋值时,言下之意就是不等于,但是又不能用!= ,(其实这样说也不准确,我也不知道该怎么表达,有知道的人博友可以帮忙补充一下~~~),这样就实现了相同记录编号相同的目的,同时其余记录继续编号。

3、根据某字段按序排列获取排序号,且当该字段的值存在多个相同的记录时,则相同值的记录的排序号相同,并且下一组值的排序号为上一组内记录数+上一个排序号。

同样先看代码:




运行结果:

上面的sql里又增加了一个参数sart,表示当前每次相同的个数,(同时还增加了rowtotal1,用于区别之前的roetotal,因为在这段sql中rowtotal在运行期间已被多次赋值,不适合做sart的比较参数)下一组记录,将在之前的排名上加上此参数就表示,下一组记录的排序编码。为了再次验证sql准确性,再看一组运行结果,(调整日志创建时间为log_update > "2016-06-20" and log_update < "2017-03-01"),

好了,这三种常用的获取排列序号的sql写好了,供大家参考一下,若是有不正确的地方还望大家指出,互相学习。


2018/04/19错误纠正:

上面的sql有个问题就是当数据是0的时候,没有进行特殊处理这个时候得到的rank_no是一个null值,排序就会出问题,下面针对第三种情况做一下纠正其余的类似:

最新文章
2024年语音识别软件推荐名单出炉
下面给大家推荐几款好用的免费的语音识别软件,有需要的小伙伴们来了解一下。Neospeech语音库是一款功能强大的合成语音软件,其发声效果自然逼真,几乎可以乱真。该软件采用了先进的TTS技术,将文本状态的文字信息转化为可听的声音信息,使
excel快速填充的四种方法(excel表格怎么排序号123456)
使用Excel除了常见的函数、图表、数据透视表等操作,要想高效完成工作,还有必不可少的一个东西就是Excel小技巧。今天我们就来学习一下,日常工作中常见的四大序号填充方法。操作步骤:1、我们首先在序号最前方输入1、2两个数字序号,然后
2024艺术考研考点追踪:AI和艺术的关系
AI创作属于艺术创作吗首先,我们需要明确什么是艺术创作。艺术创作通常指的是人类通过灵感和创意,运用各种工具和技巧,创造出具有审美价值和情感表达的艺术作品的过程。在这个过程中,人类会运用想象力、情感、审美等多种因素,以达到表达
flutter开发web项目
Flutter Web在美团外卖的实践 - 掘金 让项目支持web :flutter create . 运行:flutter run -d chrome 运行指定渲染方式:flutter run --web-renderer html -d chrome 打包:flutter build web --release --web-re
2024年阿里云活动服务器优惠活动,新老用户均可享受
​​2024年服务器活动,阿里云大促活动来了,阿里云服务器价格多少钱?今天整理汇总了最新的阿里云服务器租用费用及阿里云服务器优惠活动,可以【点击直达】阿里云官方活动页面了解。阿里云服务器分为ECS云服务器、轻量应用服务器和GPU云服
AI文章扩写:从1百字到1万字
人工智能(AI)作为一项前沿技术,正逐渐渗透到各个领域中。在写作领域,AI的应用已经取得了显著进展。本文将重点探讨如何利用人工智能扩写文章,为写作者提供一种快速、高效的创作辅助工具。 01 — AI文章
Git 使用教程
文末留有惊喜,欢迎阅览。 windows安装:进入网站https://git-scm.com/下载安装,然后在 cmd命令行配置 直接去腾讯软件中心下载也可以!git config --global user.name “itnanls”git config --global user.email
AI一键生成超强商业计划书,轻松开启创业之旅!
开启创业之旅,一键生成超强商业计划书!你是不是一直在寻找一个创业灵感,但又觉得自己的想法不足以支持一份专业的商业计划书?或者你是否在努力准备一份详细的商业计划书,但发现自己无从下手?不用担心,我们的AI一键生成超强商业计划书
fiora(二次元聊天室)
《fiora(二次元聊天室)》是一款以二次元为主题的Web多人在线匿名聊天工具,一秒钟回到上个世纪八九十年代聊天室的年代,大家可以进入fiora聊天室,发消息,各种表情图片,加好友,加群,私聊,群聊,随时随地加入你感兴趣的话题进行聊天互
Emby挂载网络文件夹 emby完全使用指南
Emacs 中的光标移动C-f 光标前进一个字符C-b 光标后退一个字符C-p 上移一行C-n 下移一行M-f 前进一个单词M-b 后退一个单词C-a 行首C-e 行尾M-a 句首M-e 句尾M-{ 上一个段落M-} 下一个段落C-v 屏幕上卷一个屏M-v 屏幕下卷一个屏C-M-v 另一个
相关文章
推荐文章
发表评论
0评