日期:2014-05-19  浏览次数:20405 次

exists 子查询请教?请前辈指点!
表A结构:

学号     课程           成绩     有效
2001     计算机       80         是
2001     计算机       70         否

select   *   from   成绩   a   where   有效= '是 '   and   exists(select   *   from   成绩   b   where   有效= '否 '   where   a.学号=b.学号   and   a.课程=b.课程   )

意思是不是:   只要子查询中的   学号和课程   跟   父查询的一样,就显示出来?
                        比较的字段只涉及到       where   a.学号=b.学号   and   a.课程=b.课程   中的学号和课程   ?


------解决方案--------------------
select * from 成绩 a where 有效= '是 ' and exists(select * from 成绩 b where 有效= '否 ' and a.学号=b.学号 and a.课程=b.课程 )

------解决方案--------------------
and exists(select * from 成绩 b where 有效= '否 ' and a.学号=b.学号 and a.课程=b.课程 )
整个的意思是存在 这样的 成绩 记录 ,它的学号、课程都于a的记录一样,而且它的有效= '否 '

再加上条件有效= '是 ' 就是两个完整的条件
------解决方案--------------------
select * from 成绩 a where 有效= '是 ' and exists(select * from 成绩 b where 有效= '否 ' and a.学号=b.学号 and a.课程=b.课程 )
------解决方案--------------------
个人理解是这样的:找出同一个学生id的同一门课程既有否又有是的纪录