手记

【备战春招】第16天+MySQL刷题-05

模块名
描述
课程名称
全能软件测试工程师
课程章节
MySQL刷题
打卡知识进程
知识进程:16 / 21
1.node.js初体验windows
2.commonjs-回顾ES6模块化
3.commonjs的语法介绍
4.commonjs和ES6 Module的区别
5.Bug分类
6.node.js和前端js的区别
7.左关联
8.聚合函数
9.【案例】统计上班时间
10.数据库的索引
11.索引的分类
12.查询数学成绩比语文成绩高的学生
13.查询平均成绩大于80分的学生
14.学生总成绩排序
15.学过体育课学生的年龄
16.查询学号大年龄小的学生
主讲老师
大周
学习开始时间
2023.02.21 21:00
学习结束时间
2023.02.21 21:30
总计时
30 min
课程收获/主要内容/编程目标
查询学号大年龄小的学
学习感受/感想/领悟(心得)
我应该去工作。

编程目标:在学生表中查询学号(id)比"苗冷安"大,但年龄比他小的学生。

编程思路:
1.连接两次 student 表,分别使用别名 a 和 b 表示不同的表实例。

from student a,student b

2.使用 WHERE 子句筛选出满足以下条件的学生:

  • b 表中的学生名字为 “苗冷安”
  • a 表中的学生生日晚于 b 表中的学生生日
  • a 表中的学生 ID 大于 b 表中的学生 ID
where b.student_name = "苗冷安"
and a.id > b.id
and a.student_birthday > b.student_birthday

3.在 SELECT 子句中选择以下列:

  • a 表中的学生 ID(id)
  • a 表中的学生名字(student_name)
  • a 表中的学生生日(student_birthday)
  • b 表中的学生生日(student_birthday)
  • b 表中的学生 ID(id),由于 a 和 b 表中的列名重复,使用了别名来区分
select a.id,a.student_name,a.student_birthday,
b.student_birthday,b.id

4.使用 ORDER BY 子句按照 a 表中的学生 ID 升序进行排序。

order by a.id asc

完整代码如下;

select a.id,a.student_name,a.student_birthday,
b.student_birthday,b.id
from student a,student b
where b.student_name = "苗冷安"
and a.id > b.id
and a.student_birthday > b.student_birthday
order by a.id asc

你可能会问,年龄比苗冷安小,不应该是 你的年龄 < 苗冷安的年龄吗?
假如你的出生日期是1999-08-08,我的年龄是1998-0808,
你的年龄是不是比我小?是的。
所以你的 birthday 是不是比我要大?是的。
疑问解决。

代码解读:
1.通过 FROM 子句将 student 表连接两次,使用别名 a 和 b 表示两个不同的表实例。
2.WHERE 子句中的条件筛选了学生名字为 “苗冷安” 的学生,并且限制了 a 表中的学生生日晚于 b 表中的学生生日,以及 a 表中的学生 ID 大于 b 表中的学生 ID,从而排除了查询结果中的冗余和重复数据。
3.SELECT 子句中选择了 a 表中的学生 ID(id)、学生名字(student_name)、学生生日(student_birthday),以及 b 表中的学生生日(student_birthday)和学生 ID(id)。其中,由于 a 和 b 表中的列名重复,使用了别名来区分。
4.查询结果按照 a 表中的学生 ID 升序排序。

运行结果:

1人推荐
随时随地看视频
慕课网APP

热门评论

高筑墙,广积粮。学习重在积累。相信量变引起质变,进而带来高薪。我能行。

查看全部评论