【发布时间】:2011-09-05 13:05:05
【问题描述】:
我只想检索成绩不可接受的学生。我原来的查询是:
SELECT ssm.STUDENT_ID,COUNT(srcg.GRADE_TITLE) AS POSTED_GRADES
FROM STUDENT_ENROLLMENT ssm, STUDENT_REPORT_CARD_GRADES srcg
WHERE ssm.SYEAR='2010'
AND ssm.SCHOOL_ID='12'
AND ssm.GRADE_ID IN ('140','141','142','143','144','145')
AND srcg.STUDENT_ID=ssm.STUDENT_ID
AND srcg.SYEAR='2010'
AND srcg.SCHOOL_ID='12'
AND srcg.MARKING_PERIOD_ID='434'
AND srcg.GRADE_TITLE IN ('1','2','F','D')
GROUP BY ssm.STUDENT_ID;
但我不在乎计数;我只想找到成绩不好的学生。我正在尝试另一个查询:
SELECT ssm.STUDENT_ID
FROM STUDENT_ENROLLMENT ssm
WHERE ssm.SYEAR='2010'
AND ssm.SCHOOL_ID='12'
AND ssm.GRADE_ID IN ('140','141','142','143','144','145')
AND EXISTS(SELECT srcg.GRADE_TITLE from STUDENT_REPORT_CARD_GRADES srcg, STUDENT_ENROLLMENT ssm
WHERE srcg.STUDENT_ID=ssm.STUDENT_ID
AND srcg.SYEAR='2010'
AND srcg.SCHOOL_ID='12'
AND srcg.MARKING_PERIOD_ID='434'
AND srcg.GRADE_TITLE IN ('1','2','F','D'));
但它返回更多记录,所以显然我做错了什么。有没有办法使用 EXISTS 来返回与第一个查询相同的结果,但哪个更有效?
【问题讨论】:
-
你试过并检查了性能吗?
-
我看不出有什么错误。是否有可能在 Student_Enrollment 上有重复的 Student_ID?