如何使用SQL关联matches和teams表查询目标赛事数据?
查询每场比赛对阵队名、比分、比赛日期的SQL写法
matches表中仅存储了两支参赛队伍的ID,需要两次关联teams表分别匹配两支队伍的ID取出对应名称,可直接使用以下语句:
SELECT t1.name AS team1名称, t2.name AS team2名称, m.score AS 赛事比分, m.date AS 比赛日期 FROM matches m INNER JOIN teams t1 ON m.team1id = t1.id INNER JOIN teams t2 ON m.team2id = t2.id;
说明
- 两次关联
teams表必须使用不同别名(示例中用了t1、t2),否则数据库无法区分要取哪支队伍的名称 - 上述语句使用内连接,只会返回队伍ID能在
teams表完全匹配到的比赛记录。如果存在比赛记录里的队伍ID在队伍表缺失、又需要保留这类异常比赛的场景,可以把INNER JOIN替换为LEFT JOIN - SELECT后的
AS是给返回结果的列设置别名,你可以根据需要换成英文别名(比如team1_name),如果不设置别名,两个队伍名称列会重名,不利于结果读取 - 表别名可以根据使用习惯调整,比如把
t1改为home_team、t2改为away_team,语句可读性会更高
内容的提问来源于stack exchange,提问作者gmuru
相关产品推荐
相关产品推荐

