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

INNER JOIN关联teams表无法同时获取主客场球队名及缩写问题

解决方案

不需要用UNION实现这个需求,当前查询无法同时返回主客场数据的核心原因是:仅对teams表做了一次关联,且关联条件只匹配主场球队ID,所以查询到的所有teams表字段都对应主场球队信息。

要同时拿到主客场两队的信息,只需要给teams表设置不同的别名,分别和主场ID、客场ID做两次关联即可,修正后的SQL如下:

SELECT
    g.home,
    g.away,
    t_home.name AS home_name,
    t_home.abbreviation AS home_abbr,
    t_away.name AS away_name,
    t_away.abbreviation AS away_abbr
FROM
    games g
INNER JOIN teams t_home 
    ON g.home = t_home.id
INNER JOIN teams t_away 
    ON g.away = t_away.id
WHERE
    g.date >= '2022-01-01';

写法说明

  • 给表设置别名是为了简化SQL书写,同时区分同一张表的两次关联逻辑:
    • 别名t_home的teams表关联主场球队ID,查询到的name、abbreviation字段对应主场球队信息
    • 别名t_away的teams表关联客场球队ID,查询到的name、abbreviation字段对应客场球队信息
  • 如果games表存在主客场ID为空的异常数据,且需要保留这些比赛记录,可以把INNER JOIN替换为LEFT JOIN,避免关联不到球队数据时整条比赛记录被过滤。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.03 09:03:50