MySQL 查询前/后3条

  • 1 查询SQL
  • 2 学生表
  • 3 成绩表

1 查询SQL

select a.`subject`,a.score,s.`name`
from score a
left join student s
on s.id = a.student_id
where (select count(1) from score b where b.`subject` = a.`subject` and a.score < b.score) < 3
order by a.`subject`, a.score desc;
25   化学  95.02   3   伊利丹
5   化学  95.02   1   疾风剑豪
35  化学  78.02   4   阿尔萨斯
44  历史  96.02   5   牛头人
24  历史  90.02   3   伊利丹
4   历史  67.02   1   疾风剑豪
43  外语  88.00   5   牛头人
13  外语  81.00   2   无双剑姬
23  外语  78.00   3   伊利丹
2   数学  78.20   1   疾风剑豪
12  数学  74.20   2   无双剑姬
42  数学  67.20   5   牛头人
11  语文  94.40   2   无双剑姬
31  语文  66.40   4   阿尔萨斯
41  语文  65.40   5   牛头人

2 学生表

/*Navicat Premium Data TransferSource Server         : 5 -- 127.0.0.1Source Server Type    : MySQLSource Server Version : 80026Source Host           : localhost:3306Source Schema         : bank_qa_credit_cardTarget Server Type    : MySQLTarget Server Version : 80026File Encoding         : 65001Date: 14/04/2022 14:05:37
*/SET NAMES utf8mb4;
SET FOREIGN_KEY_CHECKS = 0;-- ----------------------------
-- Table structure for student
-- ----------------------------
DROP TABLE IF EXISTS `student`;
CREATE TABLE `student`  (`id` varchar(50) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NOT NULL COMMENT '学生ID',`age` int NULL DEFAULT NULL COMMENT '学生年龄',`name` varchar(50) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NULL DEFAULT NULL COMMENT '学生姓名',PRIMARY KEY (`id`) USING BTREE
) ENGINE = InnoDB CHARACTER SET = utf8mb4 COLLATE = utf8mb4_unicode_ci ROW_FORMAT = Dynamic;-- ----------------------------
-- Records of student
-- ----------------------------
INSERT INTO `student` VALUES ('1', 12, '疾风剑豪');
INSERT INTO `student` VALUES ('2', 12, '无双剑姬');
INSERT INTO `student` VALUES ('3', 12, '伊利丹');
INSERT INTO `student` VALUES ('4', 12, '阿尔萨斯');
INSERT INTO `student` VALUES ('5', 12, '牛头人');SET FOREIGN_KEY_CHECKS = 1;

3 成绩表

/*Navicat Premium Data TransferSource Server         : 5 -- 127.0.0.1Source Server Type    : MySQLSource Server Version : 80026Source Host           : localhost:3306Source Schema         : bank_qa_credit_cardTarget Server Type    : MySQLTarget Server Version : 80026File Encoding         : 65001Date: 14/04/2022 14:05:27
*/SET NAMES utf8mb4;
SET FOREIGN_KEY_CHECKS = 0;-- ----------------------------
-- Table structure for score
-- ----------------------------
DROP TABLE IF EXISTS `score`;
CREATE TABLE `score`  (`id` varchar(50) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NOT NULL COMMENT '成绩ID',`subject` varchar(50) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NULL DEFAULT NULL COMMENT '考试科目',`score` decimal(5, 2) NULL DEFAULT NULL COMMENT '考试成绩',`student_id` varchar(50) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NOT NULL COMMENT '学生ID',PRIMARY KEY (`id`) USING BTREE
) ENGINE = InnoDB CHARACTER SET = utf8mb4 COLLATE = utf8mb4_unicode_ci ROW_FORMAT = Dynamic;-- ----------------------------
-- Records of score
-- ----------------------------
INSERT INTO `score` VALUES ('1', '语文', 56.40, '1');
INSERT INTO `score` VALUES ('11', '语文', 94.40, '2');
INSERT INTO `score` VALUES ('12', '数学', 74.20, '2');
INSERT INTO `score` VALUES ('13', '外语', 81.00, '2');
INSERT INTO `score` VALUES ('14', '历史', 55.02, '2');
INSERT INTO `score` VALUES ('15', '化学', 65.02, '2');
INSERT INTO `score` VALUES ('2', '数学', 78.20, '1');
INSERT INTO `score` VALUES ('21', '语文', 45.40, '3');
INSERT INTO `score` VALUES ('22', '数学', 11.20, '3');
INSERT INTO `score` VALUES ('23', '外语', 78.00, '3');
INSERT INTO `score` VALUES ('24', '历史', 90.02, '3');
INSERT INTO `score` VALUES ('25', '化学', 95.02, '3');
INSERT INTO `score` VALUES ('3', '外语', 35.00, '1');
INSERT INTO `score` VALUES ('31', '语文', 66.40, '4');
INSERT INTO `score` VALUES ('32', '数学', 43.20, '4');
INSERT INTO `score` VALUES ('33', '外语', 12.00, '4');
INSERT INTO `score` VALUES ('34', '历史', 45.02, '4');
INSERT INTO `score` VALUES ('35', '化学', 78.02, '4');
INSERT INTO `score` VALUES ('4', '历史', 67.02, '1');
INSERT INTO `score` VALUES ('41', '语文', 65.40, '5');
INSERT INTO `score` VALUES ('42', '数学', 67.20, '5');
INSERT INTO `score` VALUES ('43', '外语', 88.00, '5');
INSERT INTO `score` VALUES ('44', '历史', 96.02, '5');
INSERT INTO `score` VALUES ('45', '化学', 43.02, '5');
INSERT INTO `score` VALUES ('5', '化学', 95.02, '1');SET FOREIGN_KEY_CHECKS = 1;

MySQL 查询最好的前/后3条相关推荐

  1. Mysql查询各科成绩前三名并分别排序

    Mysql查询各科成绩前三名并分别排序 这个问题是之前1个朋友学mysql他们老师布置的作业,一开始我没有做过,而且刚出来做开发很多学过的东西都忘记了. 表结构如下: 一开始我是这样写的: selec ...

  2. mysql查询总成绩的前3名学生信息

    mysql查询总成绩的前3名学生信息 mysql 8.0+版本 mysql8.0下 mysql 8.0+版本 使用窗口函数 mysql8.0下 select id,STATUS,@rank1 :=@r ...

  3. mysql查询各科成绩前三名的记录,sql查询各科成绩前三名----详述过程,思路清晰不烧脑...

    使用mysql.hive查询各科成绩前三名 一.建表造数据 建表: create table scores( name varchar(100), subject varchar(100), scor ...

  4. mysql查询所有分类前三的数据

    设计思路 当mysql查询有很多分类时,可能只需要每种分类的前三或者前十的数据,不需要返回所有的结果,所以我们可以给不同种类的数据添加序号,然后通过序号来筛选结果 例:建一张工人工作质量表,用年份和质 ...

  5. MySQL查询一周前/三个月前/一年前,及昨天、今天、明天、前一个小时和后一个小时的时间

    一年前 SELECT DATE_SUB(CURDATE(), INTERVAL 1 YEAR); 三月前 SELECT DATE_SUB(CURDATE(), INTERVAL 3 MONTH); 一 ...

  6. MySQL查询总积分前十的用户信息和总分

    需求 这是前天看见的一个面试题. 在这里有两个表,一个用户表和一个用户积分记录表. 需求分析 目的 找到总积分前10的用户和用户信息 现有条件 用户表和积分记录表,唯一的联系就是会员uid. 需求实现 ...

  7. mysql查询第10到第20条记录_“取出数据表中第10条到第20条记录”的sql语句+selecttop用法...

    1.首先,select top用法: 参考问题 select top n * from和select * from的区别 select * from table -- 取所有数据,返回无序集合 sel ...

  8. mysql查询各科成绩前三名的记录_mysql巧用连表查询各科成绩前三名

    下列是各表的详情,不想自己建表的同学可以直接copy code,数据随意. 创建表成绩详情表: CREATE TABLE score ( id int(10) NOT NULL AUTO_INCREM ...

  9. mysql 查询一个字段快还是一条记录快_mysql (优化)查询一条再筛选某个字段和直接查询该条的某个字段的效率比较...

    查询所有,10000次, $sql = "select * from mh_user where (username='333') and (password='xxx')"; 总 ...

最新文章

  1. leetcode题解【持续更新】
  2. html圆角兼容jq,IE兼容css3圆角的htc解决方法
  3. 【Python】掌握Python中的索引和切片
  4. Game with modulo
  5. 《消逝的光芒》为何能成为Steam热销榜常客 ?
  6. 英伟达显卡bios修改工具_终于可以吃鸡了!英伟达入门级图灵显卡1650S开卖,性能提升25%...
  7. C#LeetCode刷题之#1-两数之和(Two Sum)
  8. java 版本EChart使用
  9. 基于Spring Cloud搭建Zpikin数据链路追踪系统
  10. maven 下载不到jar包时候,更改阿里源
  11. 数值分析原理课程实验——四阶龙格-库塔(Runge-Kutta)方法
  12. python阿拉伯数字转中文_阿拉伯数字转换成中文的python代码
  13. 详解Transformer中Self-Attention以及Multi-Head Attention
  14. DeepMind利用AI分析动物行为,可正确识别50种大型物种
  15. 初级第二旬04—六字准提观试题
  16. 小白DIY自己的系统镜像
  17. Java解决一个人赶着鸭子去每个村庄卖,每经过一个村子卖去所赶鸭子的一半又一只。这样他经过了七个村子后还剩两只鸭子,问他出发时共赶多少只鸭子?经过每个村子卖出多少只鸭子?
  18. 黑客白皮书:如何成为一名黑客(附FAQ)
  19. seo是什么,干什么用,有什么作用(二)
  20. 不同范数下的余弦定理_什么是绝对矩阵范数?

热门文章

  1. 旧金山市交通系统遭勒索软件感染细节进一步公布
  2. KeyBert、TextRank等九种本文关键词提取算法(KPE)原理及代码实现
  3. [macOS]_[初级]_[关于程序签名时出现User interaction is not allowed的问题]
  4. 阿里云oss部署静态网页
  5. 为期两个月的MATLAB与ROS联合仿真探索总结——因为热爱,所以无所畏惧
  6. 过扫描和欠扫描的前因后果
  7. PRML 读书笔记 chapter1 Introduce
  8. 重磅干货不容错过!2017云栖大会汇总资料,速来领取!
  9. 数据库事务隔离发展历史
  10. 天才程序员: 那些年我偷懒没敲的EOS代码, 让我失去了一切, 如果...