我有以下数据:
ExamEntry Student_ID Grade 11 1 80 12 2 70 13 3 20 14 3 68 15 4 75
我想找到所有通过考试的学生.在这种情况下,如果一个学生参加的考试很少,我需要找到最后的结果.
所以,在这种情况下,我会让所有学生都通过.
我可以通过一个快速查询找到它吗?我是这样做的:
通过Student_ID从数据组中选择max(ExamEntry)来查找条目列表
查找结果:
从()中的ExamEntry数据中选择ExamEntry.
但这非常慢 - 我得到大约1000个条目,这个2步过程需要10秒.
有没有更好的办法?
谢谢.
如果你的查询在你的表中有1000条记录非常慢,那就有问题了.对于现代数据库系统,包含1000个条目的表被认为非常小.
最有可能的是,你没有为你的桌子提供(主要)钥匙?
假设如果学生至少在成绩之上超过所需的最低要求,则适当的查询将是:
SELECT Student_ID , MAX(Grade) AS maxGrade FROM table_name GROUP BY Student_ID HAVING maxGrade > MINIMUM_GRADE_NEEDED
如果你真的需要最新成绩高于最低成绩:
SELECT Student_ID , Grade FROM table_name WHERE ExamEntry IN ( SELECT MAX(ExamEntry) FROM table_name GROUP BY Student_ID ) HAVING Grade > MINIMUM_GRADE_NEEDED