急啊。关于sql exists语句。彻底晕了

来源:百度知道 编辑:UC知道 时间:2024/05/14 18:47:37
有三张表:学生基本信息表,课程表,成绩表。
要查询至少有一门课程考试成绩在90分以上的学生学号和姓名。
select 学号,姓名
from 学生基本信息表
where exists (select *
from 成绩表
where 学生基本信息表.学号=成绩表.学号 and
考试成绩>90)
如果exists子查询有结果行,就会返回true,否则返回false.可是子查询语句:“select * from 成绩表 where 学生基本信息表.学号=成绩表.学号 and 考试成绩>90”根本就不成立啊。怎么返回。而且把两个表连接又是为什么?唉~
这么快就看到了大家的答复。谢谢啊。
可是我的意思是exists里面的语句单独拿出来在查询分析器里根本就实现不了啊。像其他的如in,all,any,=嵌套的语句都是可以单独拿出来实现的。这是怎么回事?真的很费解啊。

select * from 成绩表 where 学生基本信息表.学号=成绩表.学号 and 考试成绩>90 这句的意思就是找到成绩大于90的学号

两个表关联起来就是为了对应唯一的学号

整个select语句就是说 如果有90以上的学号 我就执行 select 学号,姓名
from 学生基本信息表

如果没有就不执行

select 学号,姓名 from 学生基本信息表
where 学号 in
(select 学号 from 成绩表 where 考试成绩>90)

select * from 成绩表 where 学生基本信息表.学号=成绩表.学号 and (语文>90 or 数学>90 or 英语>90)