看了一些文章,终于知道该怎么在 mysql 里面实现 row_number() 排序
话不多说,show you the code:
第一步:建表:
1
2
3
4
5
|
create table grades( ` name ` varchar (10), `subject` varchar (10), `score` int (10) ) |
第二步:写入数据
1
2
3
4
5
6
7
8
9
10
11
12
13
|
insert into grades( name , subject, score) values ( '小明' , '语文' , 85), ( '小华' , '语文' , 89), ( '小李' , '语文' , 91), ( '小芳' , '语文' , 93), ( '小明' , '数学' , 77), ( '小华' , '数学' , 95), ( '小李' , '数学' , 83), ( '小芳' , '数学' , 88), ( '小明' , '英语' , 90), ( '小华' , '英语' , 92), ( '小李' , '英语' , 85), ( '小芳' , '英语' , 88) |
数据如下:
第三步:
需求:找出各科目单科第二的同学
首先,先排序:
1
2
3
|
select name , subject, score from grades order by subject, score desc |
数据如下:
然后,每个科目按照分组排序
1
2
3
4
5
6
7
8
9
10
11
|
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 的数据取出来
最后结果如下:
这样就使用mysql实现了row_number()的功能。 在网上找的资料,很多没写清楚,这里特地用一个示例把这个实现讲清楚了,希望对你有帮助! 到此这篇关于mysql使用自定义序列实现row_number功能的文章就介绍到这了,更多相关mysql row_number功能内容请搜索脚本之家以前的文章或继续浏览下面的相关文章希望大家以后多多支持脚本之家! 转自:https://www.jb51.net/article/232555.htm
|