You need to enable JavaScript to run this app. SQL查询:获取当前成绩高于自身历史最高成绩的学生ID
优惠活动
大模型
产品
解决方案
定价
更多

SQL查询:获取当前成绩高于自身历史最高成绩的学生ID

SQL查询问题解法

错误原因

你原有语句的问题是子查询没有和外层的student表做学生ID关联,导致子查询统一返回studentlastmarks全表的最高成绩,无法实现按单个学生匹配其历史最高分的需求。

正确解法

写法1:关联子查询

适合小数据量场景,逻辑直观:

SELECT s.studentid
FROM student s
WHERE s.marks > (
    SELECT MAX(sl.marks)
    FROM studentlastmarks sl
    WHERE sl.studentid = s.studentid
)

子查询会针对外层每一行学生数据,单独筛选对应ID的历史成绩计算最大值,再和当前成绩做对比。

写法2:分组聚合后关联查询

数据量较大时性能更优,先批量计算所有学生的历史最高分再统一匹配:

SELECT s.studentid
FROM student s
JOIN (
    SELECT studentid, MAX(marks) AS max_history_mark
    FROM studentlastmarks
    GROUP BY studentid
) sl_max ON s.studentid = sl_max.studentid
WHERE s.marks > sl_max.max_history_mark

两种写法运行示例数据都会返回studentid为2和4的结果,符合需求。

内容的提问来源于stack exchange,提问作者Arrow

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.10.16 14:54:04