这个是一个比较经典的sql面试题,面试的难度挺大的,这里我将详细讲解,怎么使用这个方法进行查询操作。

  • student(Sid,Sname,Sage,Ssex)

    • Sid 学生编号,Sname 学生姓名,Sage 出生年月,Ssex 学生性别

    • 创建学生表表,添加对应的测试数据,测试数据如下

create table student(Sid varchar(10),Sname varchar(10),Sage datetime,Ssex varchar(10));
insert into student values('01' , '赵雷' , '1990-01-01' , '男');
insert into student values('02' , '钱电' , '1990-12-21' , '男');
insert into student values('03' , '孙风' , '1990-05-20' , '男');
insert into student values('04' , '李云' , '1990-08-06' , '男');
insert into student values('05' , '周梅' , '1991-12-01' , '女');
insert into student values('06' , '吴兰' , '1992-03-01' , '女');
insert into student values('07' , '郑竹' , '1989-07-01' , '女');
insert into student values('08' , '王菊' , '1990-01-20' , '女');
  • 成绩表

    • sc(Sid,Cid,score)
    • Sid 学生编号,Cid 课程编号,score 分数
    • 创建学成绩表,添加对应的测试数据,测试数据如下
create table sc(Sid varchar(10),Cid varchar(10),score decimal(18,1));
insert into sc values('01' , '01' , 80);
insert into sc values('01' , '02' , 90);
insert into sc values('01' , '03' , 99);
insert into sc values('02' , '01' , 70);
insert into sc values('02' , '02' , 60);
insert into sc values('02' , '03' , 80);
insert into sc values('03' , '01' , 80);
insert into sc values('03' , '02' , 80);
insert into sc values('03' , '03' , 80);
insert into sc values('04' , '01' , 50);
insert into sc values('04' , '02' , 30);
insert into sc values('04' , '03' , 20);
insert into sc values('05' , '01' , 76);
insert into sc values('05' , '02' , 87);
insert into sc values('06' , '01' , 31);
insert into sc values('06' , '03' , 34);
insert into sc values('07' , '02' , 89);
insert into sc values('07' , '03' , 98);

思路①

解决问题的思路是创建一个虚拟表,该表中放置两个字段分别是学生的课程一与学生的课程二。
首先获得课程一所对应的表,语句如下

SELECT st.*,sc.* from student st inner join sc on (st.Sid = sc.Sid) and sc.cid = '01'

运行结果如下图

然后依据该表在关联课程表,查询课程一与课程二都在该表中的字段,语句如下

SELECT st.*,sc.*,s2.* from student st inner join sc on (st.Sid = sc.Sid) and sc.cid = '01'
inner join sc s2 on (st.Sid = s2.Sid) and s2.cid = '02'

运行结果如下图:

最后根据该表,在判断进行课程一比课程二大的判断,语句如下图所示:

SELECT st.*,sc.*,s2.* from student st inner join sc on (st.Sid = sc.Sid) and sc.cid = '01'
inner join sc s2 on (st.Sid = s2.Sid) and s2.cid = '02' where sc.score >s2.score

运行结果如下图:

思路②

创建一张虚拟表,虚拟表中一行数据中即有两个课程的数据。

select * from student stu inner join sc s on stu.Sid = s.Sidinner JOIN sc s1 on stu.Sid = s1.Sid

①通过表中赵雷可以看出某一条数据中既包含两个课程的数据,可能这两个课程都是课程一,等等情况

② 然后,选出一条数据中既有课程一又有课程二的数据(有的话肯定是两条,设定一条数据中前面的字段为课程一),然后选择课程一大于课程二的数据

select * from student stu inner join sc s on stu.Sid = s.Sidinner JOIN sc s1 on stu.Sid = s1.Sidwhere s.Cid = '01' and s1.Cid = '02' and s.score > s1.score

查询“ 01 “课程比“ 02 “课程成绩高的学生的信息及课程分数相关推荐

  1. mysql中 课程1比课程2成绩高_小菜菜mysql练习解读分析1——查询 01 课程比 02 课程成绩高的学生的信息及课程分数......

    查询" 01 "课程比" 02 "课程成绩高的学生的信息及课程分数 好的,第一道题,刚开始做,就栽了个跟头,爽歪歪,至于怎么栽跟头的 --需要分析题目,查询的是 ...

  2. mysql中 课程1比课程2成绩高_小菜菜mysql练习解读分析1——查询 01 课程比 02 课程成绩高的学生的信息及课程分数...

    查询" 01 "课程比" 02 "课程成绩高的学生的信息及课程分数 好的,第一道题,刚开始做,就栽了个跟头,爽歪歪,至于怎么栽跟头的 --需要分析题目,查询的是 ...

  3. mysql查询01课程比02课程_小菜菜mysql练习解读分析1——查询” 01 “课程比” 02 “课程成绩高的学生的信息及课程分数...

    查询" 01 "课程比" 02 "课程成绩高的学生的信息及课程分数 好的,第一道题,刚开始做,就栽了个跟头,爽歪歪,至于怎么栽跟头的 --需要分析题目,查询的是 ...

  4. 小菜菜mysql练习解读分析1——查询 01 课程比 02 课程成绩高的学生的信息及课程分数...

    查询" 01 "课程比" 02 "课程成绩高的学生的信息及课程分数 好的,第一道题,刚开始做,就栽了个跟头,爽歪歪,至于怎么栽跟头的 --需要分析题目,查询的是 ...

  5. mysql中 课程1比课程2成绩高_小菜菜 MySQL 练习解读分析 1-- 查询 01 课程比 02 课程成绩高的学生的信息及课程分数...

    小菜菜 MySQL 练习解读分析 1-- 查询 "01" 课程比 "02" 课程成绩高的学生的信息及课程分数 查询 "01" 课程比 &qu ...

  6. Numpy数据分析模块实训-【根据“某门课程平时成绩和期末考试成绩.csv”内容,计算课程的平时成绩和期末考试成绩的均值、标准差、方差、最小值、最大值,输出期末考试比平时成绩高的学生名单,并输出期末】

    - - 该文章为本人原创!主要是用来记录学习的过程和分享给需要的博友.若有出错或者更好解决方法欢迎评论和私信交流学习!!! ' Numpy数据分析模块实训 - 根据"某门课程平时成绩和期末考 ...

  7. 有n个结构体变量,内含学生学号、姓名和3门课程的成绩。要求输出平均成绩最高的学生的信息(包括学号、姓名、3门课程成绩和平均成绩)。

    题目要求: 有n个结构体变量,内含学生学号.姓名和3门课程的成绩.要求输出平均成绩最高的学生的信息(包括学号.姓名.3门课程成绩和平均成绩). 解题思路: 将n个学生的数据表示为结构体数组.按照功能函 ...

  8. 有n个结构体变量,内含学生学号、姓名和3门课程的成绩。要求输出平均成绩最高的学生的信息(包括学号、姓名、3门课程成绩和平均成绩)

    有n个结构体变量,内含学生学号.姓名和3门课程的成绩.要求输出平均成绩最高的学生的信息(包括学号.姓名.3门课程成绩和平均成绩) 代码: #include<stdio.h>#define ...

  9. 例 9.7 有n个结构体变量,内含学生学号、姓名和3门课程的成绩。要求输出平均成绩最高的学生的信息(包括学号、姓名、3门课程成绩和平均成绩)。

    C程序设计(第四版) 谭浩强 例9.7 个人设计 例 9.7 有n个结构体变量,内含学生学号.姓名和3门课程的成绩.要求输出平均成绩最高的学生的信息(包括学号.姓名.3门课程成绩和平均成绩). 代码块 ...

最新文章

  1. 第一章 java nio三大组件与使用姿势
  2. 【开发环境】Mac 中 IntelliJ IDEA 运行 Python 程序 ( 安装 Python Community Edition 插件 )
  3. Fedora下网络配置及相关命令
  4. java必知必会_Java必知必会--spring解析基础篇
  5. 嵌入式软件工程师2021面试指南【转】
  6. 购书中心管理系统的设计
  7. 想赚钱是好事,但盲目创业就容易悲剧
  8. WAV文件的二进制格式解析
  9. java编写数字时钟_用JAVA写数字时钟
  10. HeadFirstJava 4,5,6
  11. 华为杯数学建模竞赛百分百获奖经验分享(获奖 == 四分经验,三分运气,三分实力)
  12. 用java将excel文档格式的标日初单词转成适合有道单词本的xml格式
  13. 2017博鳌亚洲青年论坛(香港)顺利召开 中国发展人工智能优势在哪?
  14. window 获取cpu型号_教你如何修改电脑上的CPU型号信息!
  15. iPhoneX、iPhoneXS、iPhoneXR、iPhoneXSMax屏幕适配尺寸@media
  16. python常见运算符
  17. 信息系统项目管理师考前建议
  18. js实现图片裁剪效果
  19. 配音秀显示服务器溜去配音啦,配音秀作品恢复方法操作介绍
  20. Promise的基础使用与生成器配合Promise解决回调地狱

热门文章

  1. lisp 左手钢筋_钢筋下料小常识.doc
  2. SpringAOP(2)
  3. 黑马程序员 高新技术五---代理
  4. 520礼物送女生什么好一些?2022年精选礼物合集
  5. 烟气里都含有哪些有毒物质
  6. Android Studio 获取屏幕宽度跟高度
  7. lucene php,用PHP调用Lucene包来实现全文检索_php
  8. Python随机数、随机序列生成
  9. 中国立体绿化行业现状及市场规模走势分析
  10. 全网最详细的新手入门的Linux安装教程