Chinaunix
标题:
求教一个关于SQL查询的难题
[打印本页]
作者:
neil_young
时间:
2006-04-11 10:43
标题:
求教一个关于SQL查询的难题
为了便于大家理解,我虚构了这么一个场景,因此大家不要问这个情况合理不合理。
比如有一张学生表 student (studentID,name,class),以及一张成绩表score(studentID,name,score,subject)。
此时学生表里插入了一个新的学生纪录。(5,王五,5班),成绩表里应该没有相应的王五的记录。
学生表
studentID, name, class
1,张三,1班,
2,小华,5班,
3,李四,5班,
4,王五,5班
成绩表
studentID, name,score, subject
1,张三,75,英语,
2,小华,60,英语,
2,小华,65,语文,
3,李四,80,语文,
3,李四,95,英语
但我想要得到这样的一个结果,把所有5班的学生的英语成绩列出来,包括没有成绩的,但名单上应该有这个人。也就是这样
studentID, name, class,score, subject
2,小华,5班,60,英语,
3,李四,5班,95,英语,
4,王五,5班,null,null
作者:
neil_young
时间:
2006-04-11 10:48
不知道要如何构建这个SQL语句呢,用inner join,或者left join 似乎都不能解决,起初我是这样写的
select * from student
left join score
on score.studentID=student.studentID
where subject="英语" and class="5班"
但这样的结果,王五的纪录被忽略了。
作者:
neil_young
时间:
2006-04-11 10:51
我想到要先把 select * from score where subject="英语" 这些纪录先形成一个临时表,
再和student 用left join 连接应该能得到我想要的结果,但是好象很麻烦。
不知道碰到这种情况,应该如何处理呢,不一定非要用一个SQL语句。
大家觉得成熟高效的处理方式是怎么样的。
谢谢
作者:
rardge
时间:
2006-04-11 11:15
where (subject="英语" or subject is null) and ...
作者:
neil_young
时间:
2006-04-11 16:10
啊啊,失败,居然这么简单就给解决了,高人啊
欢迎光临 Chinaunix (http://bbs.chinaunix.net/)
Powered by Discuz! X3.2