表信息
学生信息表:
学生成绩表
-- 查询学过编号为"01"但是没有学过编号为"02"的课程的同学的信息
错误的做法:
第一步: 筛选出学过"01"课程的
select * from score where c_id = '01'
第一步:筛选出没学过"02" 课程的
select * from score where c_id != '02'
第三部: inner join 连接
select s.*,sc1.score,sc2.score from student s
inner join (select * from score where c_id = '01') sc1 on s.s_id = sc1.s_id
inner join (select * from score where c_id != '02') sc2 on s.s_id = sc2.s_id;
结果(从原表信息可知s_id为01-05/07的同学都修了'02'课程)
正确的做法:
第一步:先用student表左连接学过课程'01'的和学过课程'02'的
select s.*,sc1.score,sc2.score from student s
left join (select * from score where c_id = '01') sc1 on s.s_id = sc1.s_id