读书人

查询语句!

发布时间: 2012-03-20 14:01:10 作者: rapoo

查询语句求助!!!!!!!!
有三个表:学生信息、考试成绩、学籍变更。
学生信息表字段:
学号 姓名 性别 出生年月 家庭住址

考试成绩表字段:
学号 学期 语文 数学 英语

学籍变更表字段:
学号 变更方式 原因

问题:要筛选出没有参加考试(就是没有考试成绩)同时学籍也没有发生变更的学生。
Select学生信息.学号 from学生信息, 考试成绩, 学籍变更
Where 学生信息.学号 <> 考试成绩.学号 and学生信息.学号 <> 学籍变更.学号
为什么执行不了这个查询语句?
此查询语句应该如何写?


[解决办法]
学生表A,成绩表B,学籍C
问题:要筛选出没有参加考试(就是没有考试成绩)同时学籍也没有发生变更的学生。
select * from A,C where (A.学号 not in (select 学号 from b) ) AND (c.学号=a.学号 and 变更方式=没有变更)

[解决办法]
如果是sql server数据库应该可以这么写

select * from 学生信息表 a,考试成绩表 b,学籍变更表 c
where a.学号 <> b.学号 and a.学号 <> c.学号

或者

select * from 学生信息表 a
inner join 考试成绩表 b on a.学号 <> b.学号
inner join 学籍变更表 c on a.学号 <> c.学号

[解决办法]
在三张表上的学生id字段建索引,试试
select StuID from Student s where
(not exists(select 1 from exam where Stu_D=s.StuID))
and (not exists(select 1 from Change where StuID=s.StuID))
或者
select StuID from Student s where
(not exists(select 1 from exam where s.Stu_D=StuID))
and (not exists(select 1 from Change where s.StuID=StuID))

读书人网 >.NET

热点推荐