我有以下数据:
ExamEntry Student_ID Grade
11 1 80
12 2 70
13 3 20
14 3 68
15 4 75
Run Code Online (Sandbox Code Playgroud)
我想找到所有通过考试的学生.在这种情况下,如果一个学生参加的考试很少,我需要找到最后的结果.
所以,在这种情况下,我会让所有学生都通过.
我可以通过一个快速查询找到它吗?我是这样做的:
通过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
Run Code Online (Sandbox Code Playgroud)
如果你真的需要最新成绩高于最低成绩:
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
Run Code Online (Sandbox Code Playgroud)
归档时间: |
|
查看次数: |
4727 次 |
最近记录: |