SQL条件查询问题

来源:百度知道 编辑:UC知道 时间:2024/04/27 14:17:02
学生选课表:sc(学生号, 课程号, 课程成绩)
请查询选修了001和002而没有选修003课程的学生学号并且002课程成绩70分以上;
我想了下,不怎么好写。 你贴贴你答案看下。 那种方法是不行的~~

select distinct 学生号 from SC where 学生号 not in (select 学生号 from SC where 课程号='003') and
学生号 in (select 学生号 from SC where 课程号='001') and 学生号 in (select 学生号 from SC where 课程号='002' and 课程成绩>=70) 写了个从效率考虑并不高的语句。。。 希望能有更好的答案~~

http://zhidao.baidu.com/question/94290262.html

汗一个,怎么都是问相同问题的人,这题难不到LZ吧?

等会啊,我先忙会,一会回答,先占个窝

select a.学生号 from sc a,
(select * from sc where 课程号='002' and 课程成绩>=70) b,
(select * from sc where 课程号<>'003') c
where
a.课程号='001'
and a.学生号=b.学生号
and a.学生号=c.学生号
group by a.学生号

select 学生号 from sc where 学生号 in (select 学生号 from sc where 课程号 ="001"and 课程号 ="002" and 课程号<>003) and 学生号 in (select 课程号 from sc where 课程号=002 and 课程成绩>70)

002课程成绩70分以上这个条件很简单,估计你觉得不好写是在前面
换个思路,其实你可以把同一个学生的课程号处理为一个值,拼接在一起,如001,002,003,004....,然后再用like来查也就可以了。
以上是思路
实现方法:可以使用拼接SQL的方法来实现,需要用到子查询或者临时表。
楼主也是经常在这混的人,给个思路和方法,我想应该够了,脚本就不写了。

select 学生号 from sc where 学生号 in
(select distinct 学生号 from sc where 课程号 = '002' and 课程成绩 > 70) and