Mysql实现排名及指定内容查询排名
1.目的:1.1.在mysql中根据相关要求对指定表结构进行排名;
1.2.根据要求查询对象排名
2.步骤:2.1.制作表结构
Score(s_id,c_id,s_score) –学生编号,课程编号,分数
#成绩表
CREATE TABLE `Score`(`s_id` VARCHAR(20),`c_id` VARCHAR(20),`s_score` INT(3),PRIMARY KEY(`s_id`,`c_id`)
2.2.插入数据
#成绩表测试数据
insert into Score values('01' , '01' , 80);
insert into Score values('01' , '02' , 90);
insert into Score values('01' , '03' , 99);
insert into Score values('01' , '04' , 67);
insert into Score values('02' , '01' , 70);
insert into Score values('02' , '02' , 60);
insert into Score values('02' , '03' , 80);
insert into Score values('02' , '04' , 98);
insert into Score values('03' , '01' , 80);
insert into Score values('03' , '02' , 80);
insert into Score values('03' , '03' , 80);
insert into Score values('04' , '01' , 50);
insert into Score values('04' , '02' , 30);
insert into Score values('04' , '03' , 20);
insert into Score values('04' , '04' , 40);
insert into Score values('05' , '01' , 76);
insert into Score values('05' , '02' , 87);
insert into Score values('06' , '01' , 31);
insert into Score values('06' , '03' , 34);
insert into Score values('07' , '02' , 89);
insert into Score values('07' , '03' , 98);
insert into Score values('08' , '01' , 89);
insert into Score values('08' , '02' , 98);
2.3.查询表数据
SELECT * FROM score;
3.划分排名:保留同分同级和全排名
方法一 先查询结构再排序
select a.s_id 学号,a.c_id 课程编号,@i:=@i +1 保留排名, -- 全排名;声明变量@k:=(case when @j=a.s_score then @k else @i end) as 不保留排名, -- 同分同级;声明变量@j:=a.s_score 成绩 -- 声明变量from score a ,(select @k:=0,@i:=0,@j:=0)s ORDER BY 成绩 DESC;
方法二 先排序再查询结果
SELECT a.s_id,a.c_id,@i:=@i+1 保留排名, -- 全排名@j:=(case when @k=a.s_score THEN @j else @i end) 不保留排名, -- 同分同级@k:=a.s_score 成绩FROM (select * from score ORDER BY s_score DESC) a ,(SELECT @k:=0, @i:=0,@j:=0) s ;
查询结果如下:
4.指定姓名进行排名查询
eg.查询学号为01 课程号为02同学的排名(同分同级排名和全排名)
方法一
SELECT b.* FROM (select a.s_id ,a.c_id ,@i:=@i +1 保留排名, -- 全排名@k:=(case when @j=a.s_score then @k else @i end) as 不保留排名, -- 同分同级@j:=a.s_score 成绩from score a ,(select @k:=0,@i:=0,@j:=0)s ORDER BY 成绩 DESC) bWHERE b.s_id='01' AND b.c_id ='02';
方法二
SELECT b.* FROM (SELECT a.s_id,a.c_id,@i:=@i+1 保留排名, -- 全排名@j:=(case when @k=a.s_score THEN @j else @i end) 不保留排名, -- 同分同级@k:=a.s_score 成绩FROM (select * from score ORDER BY s_score DESC) a ,(SELECT @k:=0, @i:=0,@j:=0) s) b
WHERE b.s_id='01' AND b.c_id ='02';
查询结果如下:
Mysql实现排名及指定内容查询排名相关推荐
- mysql 查询成绩排名_mysql 学生成绩查询排名
sql语句查询排名 思路:有点类似循环里面的自增一样,设置一个变量并赋予初始值,循环一次自增加1,从而实现排序: mysql里则是需要先将数据查询出来并先行按照需要排序的字段做好降序desc,或则升序 ...
- Mysql Json、JsonArray 指定属性查询
场景: 对Mysql 数据库中存储的 Json .JsonArray 字段中指定字段做 like 模糊查询,在度娘的答案中辗转了许久,发现类似的提问很多,但很多都是千篇一律,牛头不对马嘴的无效复制文, ...
- 百度竞价批量查询排名-度哥软件
度哥竞价批量查询排名是一款强大的百度竞价批量排名查询神器,专门针对医疗行业精心制作的软件,此软件结合百度竞价系统的推广实况查询排名,排名结果一致,能提供汇总关键词排名报表,功能非常全面和完善,数据传输 ...
- mysql:查询排名
sql语句查询排名 思路:有点类似循环里面的自增一样,设置一个变量并赋予初始值,循环一次自增加1,从而实现排序: mysql里则是需要先将数据查询出来并先行按照需要排序的字段做好降序desc,或则升序 ...
- mysql 查询字段排名_mysql:查询排名
sql语句查询排名 思路:有点类似循环里面的自增一样,设置一个变量并赋予初始值,循环一次自增加1,从而实现排序: mysql里则是需要先将数据查询出来并先行按照需要排序的字段做好降序desc,或则升序 ...
- MySQL 查询排名
参考:http://fellowtuts.com/mysql/query-to-obtain-rank-function-in-mysql 前段时间看到个帖子,是关于用 SQL 查询排名的. 那个帖子 ...
- MySql排序并查询排名
MySql排序并查询排名 SELECT u.uid,u.name,u.score, @rownum := @rownum + 1 AS rownum FROM (SELECT @rownum := 0 ...
- mysql排名第一_SQL查询排名第二名的信息
今天看见同学去面试的面试题,查询出某个字段排名第二名的信息,自己就看看 如果是Oracle ,这不就是考察Oracle分页么,以Oracle的emp表为例,根据薪水排名,查询排名第二的员工信息: se ...
- mysql数据库查询排名
在MySQL中,不存在类似于SQL Server或Orcal等中的rank()函数来得到排名:所以我们需要手动地写这个rank功能. 基本知识: sql语句中,使用@来定义一个变量.如:@rank s ...
最新文章
- 资料库保存树结构的三种方法
- 不丹的启示:用国民幸福总值替代GDP
- 关于学生信息录入(文件操作)的心得体会
- MHA管理所有数据库服务器
- BZOJ3110: [Zjoi2013]K大数查询(整体二分)
- Java笔记-异常机制中try(...)中括号的用法
- oopc——4.继承
- cxgrid限定行数
- SQL Server中的动态SQL
- C# 合并多种格式文件为PDF
- 30 秒速成好莱坞黑客 -- 在 Linux 终端中伪造好莱坞黑客屏幕
- MapReduce WordCount Combiner程序
- 大型项目开发: 隔离 (《大规模C++程序设计》书摘)
- PID与MPC控制方法
- 笔记本出现此windows无线服务器,笔记本Windows7提示Windows无法配置此无线连接如何解决?...
- 关于QtCreator中三种不同编译版本 debug、release、profile 的区别
- SpringCloud与微服务Ⅷ --- Hystrix断路器
- html设置表格点击变色,js实现表格变色点击行颜色改变
- Java编程题-买苹果
- 相关算法---贪心算法