一、建表造数据
建表:
create table scores(name varchar(100),subject varchar(100),score int);
插入数据:
insert into scores values('学生a','java','100'),('学生b','java','90'),('学生c','java','90'),('学生d','java','60'),('学生e','java','80'),('学生a','python','100'),('学生b','python','90'),('学生c','python','90'),('学生d','python','60'),('学生e','python','80');
二、使用myql查询
2.1 不考虑并列情况
方法一:使用加行号的方式查询
加行号的使用规则是:@rowNum:=num意思是声明一个叫 rowNum 的变量并赋值为num示例: 现在有一个需求是: “查询学生 java 课的成绩、姓名并排名?”
select score,name,@m1:=@m1+1 r from scores,(select @m1:=0)a where subject='java' order by score desc1
查询结果如下
![12350d0011cba13c11d45ede24332b07.png](https://i-blog.csdnimg.cn/blog_migrate/f2ae325e3d040011179d04ddf0cdd026.jpeg)
此处加行号m1的作用就可以体现出来,查询语句中多了一个字