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

MySQL查询需求:统计t_matches表中各球队总积分

统计各球队总积分的MySQL查询方案

嗨,别担心,我来帮你搞定这个球队积分统计的查询语句!

咱们的核心思路是:每个球队既可能作为fk_team1参赛,也可能作为fk_team2参赛,所以得把这两种情况的积分分别算出来,再合并求和。另外,为了确保**所有球队(哪怕没参加任何比赛的)**都能出现在结果里,咱们还要和t_teams表关联起来。

直接上查询语句:

SELECT 
    t.team,
    COALESCE(SUM(m.points), 0) AS points
FROM 
    t_teams t
LEFT JOIN (
    -- 统计球队作为team1时的积分
    SELECT fk_team1 AS team_id, points_team1 AS points FROM t_matches
    UNION ALL
    -- 统计球队作为team2时的积分
    SELECT fk_team2 AS team_id, points_team2 AS points FROM t_matches
) m ON t.team = m.team_id
GROUP BY 
    t.team
ORDER BY 
    points DESC;

关键部分说明:

  • 内层的UNION ALL把两类记录合并:一类是球队作为主队(fk_team1)获得的积分,另一类是作为客队(fk_team2)获得的积分,这样每个球队的所有参赛积分都被完整提取。
  • LEFT JOIN t_teams确保即使球队没有任何比赛记录,也会出现在结果列表中,不会被遗漏。
  • COALESCE(SUM(m.points), 0)将无比赛球队的积分从默认的NULL转换为0,结果展示更友好。
  • 最后通过ORDER BY points DESC按积分降序排列,方便快速查看球队排名。

补充说明:如果t_matches的外键fk_team1、fk_team2存储的是球队ID(而非球队名称),只需将语句中t.team = m.team_id替换为对应的ID字段匹配即可(比如t.team_id = m.team_id)。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.22 08:25:27