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

MySQL多表关联查询:筛选最新赛季并统计球员积分,返回指定字段

MySQL多表关联查询:筛选最新赛季并统计球员积分,返回指定字段

我来帮你搞定这个查询!你需要的是关联所有相关表,同时筛选出最新赛季的数据,还要把赛季ID放到结果里。咱们一步步来调整:

首先,你原来的查询没关联Results表,所以没办法筛选赛季;另外也没把Season_ID加入结果集。现在我们需要补上这部分关联,同时精准筛选出最新赛季的记录。

完整的查询语句

SELECT 
    p.Player_Order,
    p.Player_Type,
    p.Player_ID,
    p.Player AS Player_Name,
    SUM(pt.Point_Value) AS `Sum(Point_Value)`,
    r.Season_ID
FROM 
    Players p
JOIN 
    Points po ON p.Player_ID = po.Player_ID
JOIN 
    PointTypes pt ON po.PointType_ID = pt.PointType_ID
JOIN 
    Results r ON po.Result_ID = r.Result_ID
WHERE 
    r.Season_ID = (SELECT MAX(Season_ID) FROM Results)
GROUP BY 
    p.Player_Order, p.Player_Type, p.Player_ID, p.Player, r.Season_ID
ORDER BY 
    p.Player_Order, `Sum(Point_Value)` DESC, p.Player;

关键调整说明

  1. 关联Results表:通过Points.Result_ID和Results.Result_ID关联,这样就能拿到每条积分记录对应的赛季ID,进而筛选最新赛季。
  2. 筛选最新赛季:用子查询(SELECT MAX(Season_ID) FROM Results)直接获取当前最新的赛季ID,确保只统计该赛季的积分。
  3. 补充Season_ID字段:把r.Season_ID加入SELECT列表,这样结果里就有你需要的赛季ID了。
  4. 优化GROUP BY:我把所有非聚合的字段都加入了GROUP BY(比如Player_Order、Player_Type),这是为了适配MySQL的严格模式(ONLY_FULL_GROUP_BY开启时的要求),而且这些字段和Player_ID是一一对应的,不会影响统计结果。
  5. 显式JOIN语法:用显式的JOIN替代你原来的隐式逗号分隔表,这样查询逻辑更清晰,也更容易维护。

这个查询会完美输出你要的结果集:按球员顺序、类型分组,显示每个球员的ID、名字、最新赛季的积分总和,以及对应的赛季ID。

内容来源于stack exchange

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.04.07 09:34:40