如何通过SQL关联表获取比赛表中主队与客队的排名及分差?
问题:同时获取比赛表中客队与主队的排名
现有两张表:games表和standings表,需要为games表的每条记录生成包含客队排名(visitor_team_standing)、主队排名(home_team_standing)、**分差(diff)**的结果。
目前已实现的SQL语句仅能获取客队排名,无法同时关联主队排名(主队关联条件为home_team_id = team_id),当前代码如下:
SELECT standings.standing visitor_standings, games.diff FROM games INNER JOIN standings ON games.visitor_team_id = standings.team_id;
解决方案
需要两次关联standings表,通过表别名区分客队和主队的关联逻辑,示例SQL如下:
SELECT vis_stand.standing AS visitor_team_standing, home_stand.standing AS home_team_standing, games.diff FROM games INNER JOIN standings AS vis_stand ON games.visitor_team_id = vis_stand.team_id INNER JOIN standings AS home_stand ON games.home_team_id = home_stand.team_id;
- 给
standings表分别设置vis_stand(对应客队排名)和home_stand(对应主队排名)两个别名,通过两次INNER JOIN分别匹配客队ID和主队ID,即可同时获取两队排名。 - 如果存在队伍无排名的情况,可将
INNER JOIN替换为LEFT JOIN,避免丢失games表中的记录。
内容的提问来源于stack exchange,提问作者DougM
相关产品推荐
相关产品推荐

