看了一些文章,终于知道该怎么在 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()的功能。
在网上找的资料,很多没写清楚,这里特地用一个示例把这个实现讲清楚了,希望对你有帮助!
相关推荐:
ChatGPT网页打不开?快来看看这些解决办法,轻松恢复正常访问!,ai金色包装
AI网页效果生成:开启网站设计的新纪元,ai画线祥云
SEO详解:如何优化你的网站提升排名,获得更多流量,伊春湖南网站优化推广
ChatGPT为什么打不开?背后原因与解决方案,慧ai写作
SEO通过-如何通过SEO优化让你的业务在搜索引擎中脱颖而出,保定网站建设推广专家
SEO抓取:让您的网站从零到一的秘诀,佛山网站建设哪家效果好
好用的AI智能工具,让生活与工作更高效!
SEO总计:如何通过SEO优化实现网站流量和排名的飞跃,三元桥网站优化
SEO元素-提升网站排名的核心要素,推广分成网站有哪些
SEO中的别类词:提升排名,轻松超越竞争对手,ai插画生肖
SEO包含的秘密:让你的网站轻松排上首页,新媒体营销推广方案目录
ChatGPTO1Pro模型:开启AI新纪元,免费应用带来无尽可能,苹果上的ai写作在哪里
SEO优化的话题:助力企业成功的关键,夏杰ai智能管家
互联网时代的“搜索截流”新玩法:如何抓住流量红利,甘孜做优化网站软件
SEO任何:如何通过精准优化让网站流量突破极限,太原网站建设培训班
亚马逊中什么是seo,亚马逊sop ,ai临摹中国名画
SEO做好,企业网站流量翻倍的关键,seo白帽技术有哪些
SEO领站-从零到一打造成功网站排名的秘密,轻淘客seo怎设置
seo网站编辑是做什么,seo网站编辑可在家兼职 ,ai慢直播
未来智能:AI智能人工软件引领数字化变革
seo适合什么职业,seo有前途么 ,ai小精灵
文章疑似AI生成怎么办?如何辨别并应对AI生成文章的挑战
SEO提高:如何通过精准优化让网站流量翻倍,优化排名seo加盟费用
ChatGPT免费用户每天的使用限制:如何高效利用,突破困境!,花花制作ai
seo网站代码是什么,网站专业术语中seo意思是什么 ,拟人ai制作
AI写作免费一键生成下载,助您轻松创作!
为什么要监控SEO效果,国家为什么要监控个人 ,抚顺ai系统
seo进阶买什么书推广,seo的推广技巧 ,菩萨壁纸ai
英语日记AI生成:轻松提升英语水平的智能助手
ChatGPT的VPN梯子:畅享全球互联网自由,打破地域限制,一直搜Ai
seo适用于什么领域,seo适用于什么领域中 ,ai智能翻译写作机器人v1.0
ChatGPT恢复正常使用时间,提升你的工作与生活效率,联想电脑AI0510
AI免费生成:开启智能创作新纪元,助力你的创意无限可能
ChatGPT198元永久会员,开启智慧之门,体验AI的极致服务!,老孙教ai
什么是seo优化营销,seo主要优化什么 ,ai绘画国风古韵
seo网络培训是什么,seo工作培训会培训啥 ,ai长投影字
SEO未来:如何在变革中抢占先机,迎接数字营销的新纪元,台州网站建设分析和总结
怎么用AI写文章:高效创作的秘诀
SEO职责:为网站注入流量,提升品牌竞争力,拼多多女装关键词排名
seo需要学会什么编程,seo要会些什么 ,剪映怎样加ai
ChatGPT维护-智能时代的数字助手,如何让你的工作更高效,ai智能救援
什么是seo快排,seo快排方案 ,ai剪图形
seo网站排名关键词优化,seo网站关键词优化怎么做 ,ai回廊
文章AI排版,让创作更高效的秘密武器
ChatGPT破解:让AI打破语言与思维的边界,ai模板vis
OpenAI账号申诉怎么办?全方位解析解决方案,ai写作免费公众号下载
不利于seo是什么,不属于seo对网店推广的作用 ,ai渐变下载
AI助手推进:智能化时代的企业革命,ai改变图片颜色
pbootcms自动翻译插件,让你的网站轻松实现多语言覆盖,ai 镀金
zblog站群,zblog怎么样 ,欧卡2ai汽车如何使用