有学生,和成绩两个表,其中字段分别是(学号,姓名,年龄),(学号,成绩,课程号)
现在想查询选了课的有哪些人?
select *from 学生
where exists(select *from 成绩)
我写的这个语句,为什么执行后显示的是学生表中全部的信息啊!我的学生表中肯定是有人没选课的啊
有学生,和成绩两个表,其中字段分别是(学号,姓名,年龄),(学号,成绩,课程号)
现在想查询选了课的有哪些人?
select *from 学生
where exists(select *from 成绩)
我写的这个语句,为什么执行后显示的是学生表中全部的信息啊!我的学生表中肯定是有人没选课的啊
唉~~exits 是对存在情况的判断,当存在时就为真。 select * from 成绩,肯定是真的啊,除非成绩表为空
改成 select * from 学生 where exists (select * from 成绩 where 学生.学号=成绩.学号)
select * from 学生表 a
where exists (select * from 成绩表 b where a.学号=b.学号)
你可以试下。
你用这个
Select * from 学生 join 成绩
on 学生.学号=成绩.学号
这样就显示只有选课的学生信息
因为你的选课标准不对,你这里的where exist是忽略的不明确,因此会出现这个问题