-- 1、查询"01"课程比"02"课程成绩高的学生的信息及课程分数
select a.* ,b.s_score as 01_score,c.s_score as 02_score from
student a
join score b on a.s_id=b.s_id and b.c_id='01'
left join score c on a.s_id=c.s_id and c.c_id='02' or c.c_id = NULL where b.s_score>c.s_score
首先是查出所有的01课程的成绩 join 代表共同
select a.* ,b.s_score as 01_score from
student a
join score b on a.s_id=b.s_id and b.c_id='01'
以上查出来的就是一个虚拟表 ,已经是全部的01课程的学生的成绩信息了。以这个虚拟表再联合成绩表,查出02课程的所有的信息
select a.* ,b.s_score as 01_score,c.s_score as 02_score from
student a
join score b on a.s_id=b.s_id and b.c_id='01'
以上是虚拟表,下面是和成绩表合并,查出02课程的全部的信息
left join score c on a.s_id=c.s_id and c.c_id='02'
以上就是一个大的虚拟表,里面有01 课程的成绩,有02课程的成绩
现在就进行比较
where b.s_score>c.s_score
成绩进行比较,在一个虚拟表里面进行比较。就可以了