MySQL关联表查询:将team1id/team2id替换为teamName语法问题
解决matches表关联teamNames表替换对战队伍ID为名称的问题
你需要两次关联teamNames表,分别对应matches里的team1id和team2id,并且给每次关联的表设置不同别名,避免数据库混淆关联逻辑。之前的错误应该是只做了一次关联,导致两个ID都匹配到同一条teamNames数据,所以显示同一个名称。
正确的SQL语句如下:
SELECT m.id, t1.teamName AS team1id, t2.teamName AS team2id, m.date FROM matches m INNER JOIN teamNames t1 ON m.team1id = t1.teamId INNER JOIN teamNames t2 ON m.team2id = t2.teamId;
语句说明:
- 给matches表取别名
m,简化写法 - 第一次关联teamNames表取别名
t1,匹配m.team1id和t1.teamId,拿到第一支队伍的名称 - 第二次关联teamNames表取别名
t2,匹配m.team2id和t2.teamId,拿到第二支队伍的名称 - 通过
AS把t1.teamName和t2.teamName重命名为原来的列名team1id和team2id,和你期望的结果列名一致
执行这条语句后,就能得到你想要的结果:
+----+---------+---------+---------------------+
| id | team1id | team2id | date |
+----+---------+---------+---------------------+
| 1 | cdx | k4h | 2023-07-26 03:12:00 |
+----+---------+---------+---------------------+
内容的提问来源于stack exchange,提问作者Jr b
相关产品推荐
相关产品推荐

