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的同一门课程既有否又有是的纪录