有两表,学生(学号,姓名),成绩(课程号,课程名,成绩)
要查询有哪些学生选课!我学的语句是select *from 学生
where exists(select *from 成绩 )为什么运行得到的是全部学生的信息!
我知道正确的写法,我想知道为什么错了
有两表,学生(学号,姓名),成绩(课程号,课程名,成绩)
要查询有哪些学生选课!我学的语句是select *from 学生
where exists(select *from 成绩 )为什么运行得到的是全部学生的信息!
我知道正确的写法,我想知道为什么错了
select *from 学生where exists(select *from 成绩)
是子查询 只是查出来所有存在成绩的学生信息!并不会显示学生的成绩信息等!
而且数据库设计的时候没有主外键关系!导致查询时条件模糊!所以出现了错误
你的这两张表设置没有任何主外键关联关系 【成绩(课程号,课程名,成绩)】这张表应该添加一个字段与学生表关联,最好表的设置为:【成绩(课程号,学号,课程名,成绩)】
select * from 学生表 where 学号 in (select 学号 from 成绩表)就可以查出所有有成绩的学生信息了
按照你写的那样 两张表根本就没关联 select* from成绩 这句肯定能执行 所以写where exists(select *from 成绩)返回值为true 也就是说相当于where限制条件白写了 select * from 学生 查出来的当然是全部学生的信息了 后边限制条件是没用的