You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何在MariaDB中查询每个学生最高学费对应的单条记录

方案1:MariaDB 10.2及以上版本(推荐,窗口函数实现)

这种写法可读性和执行效率更高,通过窗口函数按学生分组后取学费最高的行:

SELECT Name, SchoolFees
FROM (
    SELECT 
        Name, 
        SchoolFees,
        -- 按学生姓名分组,组内按学费降序排序,排名第一的就是最高学费记录
        ROW_NUMBER() OVER (PARTITION BY Name ORDER BY SchoolFees DESC) AS rank_num
    FROM Student
) AS temp
WHERE rank_num = 1;

如果需要保留同个学生多条相同最高学费的记录,把ROW_NUMBER()替换为RANK()即可。

方案2:兼容所有MariaDB版本的通用写法

针对不支持窗口函数的低版本MariaDB,可以通过子查询先取每个学生的最高学费,再关联原表匹配记录:

SELECT s.Name, s.SchoolFees
FROM Student s
INNER JOIN (
    -- 先聚合得到每个学生的最高学费
    SELECT Name, MAX(SchoolFees) AS max_fee
    FROM Student
    GROUP BY Name
) AS t ON s.Name = t.Name AND s.SchoolFees = t.max_fee;

如果需要去重同个学生的多条相同最高学费记录,可以在SELECT后加DISTINCT关键字。

以上两种写法针对你提供的示例数据,都会返回预期的James/$23、Paul/$36、Tim/$13结果。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.27 17:54:03