测试数据准备

-- mybatis.student definitionCREATE TABLE `student` (`id` int(11) NOT NULL,`name` varchar(50) DEFAULT NULL,`email` varchar(50) DEFAULT NULL,`age` int(11) DEFAULT NULL,`score` int(11) DEFAULT NULL,PRIMARY KEY (`id`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8;INSERT INTO mybatis.student
(id, name, email, age, score)
VALUES(1, 'zs', 'aaa', 12, 98);
INSERT INTO mybatis.student
(id, name, email, age, score)
VALUES(2, 'b', 'bbb', 13, 95);
INSERT INTO mybatis.student
(id, name, email, age, score)
VALUES(3, 'zs', 'zs', 13, 97);
INSERT INTO mybatis.student
(id, name, email, age, score)
VALUES(4, 'ee', 'dd', 14, 95);

错误答案

select name,score
from student
order by score desc
limit 3



正确答案

SELECT`name`,score,rank -- 表结构中不存在的字段
FROM
-- 表子查询(SELECT`name`,score,-- 定义排名变量@rownum := @rownum + 1 AS tmp,-- 用于记录排名的变量,将该变量作为brank列@incrnum :=-- case 使用方式二:多重if效果CASE-- 分数是否相同: 分数变量 是否等于 成绩列分数  分数相同: 将当前的 排名变量 赋值给rank变量WHEN @rowtotal = score THEN @incrnum  -- 分数不同:  将分数列赋值给 分数变量   ,将当前排名赋值给rank变量WHEN @rowtotal := score THEN @rownum END AS rank
FROM( SELECT id, `name`, score FROM student ORDER BY score DESC ) AS a,( SELECT @rownum := 0, @rowtotal := NULL, @incrnum := 0 ) b ) c
WHERErank <= 3




SQL查询成绩前3的student相关推荐

  1. SQL查询——各科前三名的成绩(改良版)

    SQL查询--各科前三名的成绩 表结构 查询代码 思路 小结 表结构 //临时表 cerate table id( id number ) //选课表 cerate table sc( sid num ...

  2. SQL查询成绩表中的每科第三名

    SQL查询成绩表中的每科第三名 题目要求 表格数据 grade表 c_id c_no c_name 1 1 80 1 2 90 1 3 70 1 4 95 2 1 64 2 2 88 2 3 89 2 ...

  3. sql查询成绩最高分_sql查询各科成绩前三名----详述过程,思路清晰不烧脑!

    一.建表造数据 建表: create table scores( name varchar(100), subject varchar(100), score int ); 插入数据: insert ...

  4. sql查询成绩表中每一科成绩最高的分数以及这个学生的名字,学科名

    前段时间面试的时候碰到这样一个面试题,因为很久没接触sql竟然没写出来. 如图有这样一张成绩表: 首先要理解group by 含义:"Group By"从字面意义上理解就是根据&q ...

  5. C语言查询成绩前三名的女生,如何查找每个班级总成绩前3名的学生?

    #7 kai2006-02-19 19:13 这个在标准SQL 里是支持的,在MS-SQL我刚才查了以下,没查到.你自己试试不就知道了.我用的是MySql,是可以的. 我学SQL 也不久,没什么经验. ...

  6. [关于SQL]查询成绩都大于80分的学生

    1.用一条SQL语句 查询出每门课都大于80分的学生姓名 name kecheng fenshu 张三 语文 81 张三 数学 75 李四 语文 76 李四 数学 90 王五 语文 81 王五 数学 ...

  7. mysql如何查询成绩前5名_sql 语句查询 前5名后5名的成绩

    蝴蝶不菲 两种办法:分别求最大和最小,然后union allselect * from(select * from table order by 成绩) where rownum<=5union ...

  8. WordPress 常用数据库SQL查询语句大全

    https://www.wpdaxue.com/wordpress-sql.html 在使用WordPress的过程中,我们少不了要对数据库进行修改操作,比如,更换域名.修改附件目录.批量修改文章内容 ...

  9. 【sql随笔】sql题目:查询每班成绩前三名

    实验题目:查询每班成绩前三名的信息 实验数据库:Oracle 实验数据:学生-成绩表(id,学生名,班级名,分数) 建表语句: 15笔数据,俩个班. create table OnePiece_SC ...

最新文章

  1. java hanoi_Hanoi问题java解法
  2. 微信高级研究员解析深度学习在NLP中的发展和应用 | 公开课笔记
  3. 生产环境使用ioprofile一定要谨慎
  4. IO:select、poll、epoll
  5. 直接插入排序python实现
  6. C++map容器-构造和赋值
  7. 2021牛客暑期多校训练营1 H-Hash Function(数学+FFT)
  8. php网站跨站脚本监测,基于PHP的在线跨站脚本检测工具.pdf
  9. 志汇叮咚超级外卖小程序源码6.4.3
  10. 安卓原生读写u盘_aigo Type-C固态U盘速度如何?好用吗?
  11. 为什么SQL用UPDATE语句更新时更新行数会多3行有触发器有触发器有触发器有触发器有触发器有触发器...
  12. 《REINFORCEMENT LEARNING (DQN) TUTORIAL》的学习笔记
  13. python选择语句是什么语句_Python语言中的三种选择语句
  14. Linux 常用函数
  15. python学习大纲-Python学习大纲,全网最清晰学习思路
  16. NGS 分析流程 (一)
  17. 【微信小程序】微信小程序--倒放音频的实现
  18. etcd入门系列三:身份验证访问控制
  19. 计算机网络(二) 虚拟网桥
  20. html怎么制作图片滚动文字效果,新手请看:网店店铺里的滚动文字效果代码是如何制作的...

热门文章

  1. 推荐系统实战第二部分 评价指标
  2. 【文末福利】算法大赛评委共话技术趋势,这场直播值得一看!
  3. 加入鹅厂,就趁现在!
  4. python合并多个excel代码_Python脚本合并多个Excel文件
  5. php删除双引号,PHP引号前添加反斜杠、去除反斜杠的方法
  6. java mat转csv_MATLAB数据保存成其他格式文件(.csv .xlsx .txt等)通用函数[faruto版本]
  7. 一个高并发的测试websocket脚本
  8. SSH应用之BBS之路-2、Hibernate配置
  9. python中高阶函数map怎么用_python六十课——高阶函数之map
  10. python查看系统进程_在Python中获取操作系统的进程信息