title: SQL 训练题目
date: 2023-7-15 01:45:50
tags:- SQL 训练
查询 "01" 课程比 "02" 课程成绩高的学生的信息及课程分数
解题思路:要查询的是两个课程的成绩,而且还要显示学生的信息。所以需要用到两张表,SC,Student 这两张表。
问题拆分:
- 怎么查找两个课程的成绩呢?
- 如何把课程表和学员信息表连接起来呢?
那么用到哪些知识呢?
- 子查询
- join
语句实现:先找到两门课的成绩
-- 课程1的成绩
SELECTsid,score AS class1
FROMsc
WHEREsc.cid = '01';
-- 课程2的成绩
SELECTsid,score AS class2
FROMsc
WHEREsc.cid = '02';
两个子查询结束了以后,下一步就是使用 join 把这两个查询的结果连接起来:
SELECT*
FROMStudentRIGHT JOIN (SELECTt1.sid,class1,class2 FROM( SELECT sid, score AS class1 FROM sc WHERE sc.cid = '01' ) t1,( SELECT sid, score AS class2 FROM sc WHERE sc.cid = '02' ) t2 WHEREt1.sid = t2.sid AND t1.class1 > t2.class2 ) r ON Student.sid = r.sid;
测试同步