在线时间:8:00-16:00
迪恩网络APP
随时随地掌握行业动态
扫描二维码
关注迪恩网络微信公众号
看了一些文章,终于知道该怎么在 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 解释一下: 最后,把 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()的功能。 在网上找的资料,很多没写清楚,这里特地用一个示例把这个实现讲清楚了,希望对你有帮助! 到此这篇关于mysql使用自定义序列实现row_number功能的文章就介绍到这了,更多相关mysql row_number功能内容请搜索极客世界以前的文章或继续浏览下面的相关文章希望大家以后多多支持极客世界! |
请发表评论