【问题标题】:MySQL Inner Join Between Two Tables两个表之间的 MySQL 内连接
【发布时间】:2013-12-11 18:53:09
【问题描述】:

我正在尝试加入MySQL 中的两个表。这是我的桌子:

游戏桌

GameID      Date/Time          PlayerOneID   PlayerTwoID
 13    12/10/2013 10:53:29 PM     1              2    
 14    12/10/2013 10:57:29 PM     1              2
 15    12/10/2013 10:58:29 PM     2              1

我有另一个表,其中包含一个玩家的 ID 和该玩家的姓名。

玩家表

1   Dan
2   Jon

我希望结果表如下所示:

GameID      Date/Time          PlayerOneID   PlayerTwoID
 13    12/10/2013 10:53:29 PM     Dan        Jon      
 14    12/10/2013 10:57:29 PM     Dan        Jon
 15    12/10/2013 10:58:29 PM     Jon        Dan

这是我目前正在做的事情:

SELECT Games.GameID, Games.`Date/Time`, Players.Name, PlayerTwoID
FROM Games

INNER JOIN Players
ON PlayerOneID = Players.ID

这得到了 PlayerOnes 的名字,但我也找不到 PlayerTwos 的名字。我曾尝试使用两个 INNER JOINS,但这并没有奏效。我在堆栈上阅读了很多帖子,但我没有遇到任何有效的解决方案。我是 MySQL 新手,所以后续解释会很有帮助。

【问题讨论】:

    标签: mysql sql inner-join


    【解决方案1】:

    你在正确的轨道上,你确实需要加入 Players 表两次,如下所示:

    SELECT Games.GameID, Games.`Date/Time`, p1.Name, p2.Name
    FROM Games
    INNER JOIN Players p1
    ON PlayerOneID = p1.ID
    INNER JOIN Players p2
    ON PlayerTwoID = p2.ID
    

    您可能错过的是使用别名 (p1,p2) 来区分您要加入的 Players 表的两个副本。

    【讨论】:

    • 谢谢!不过那真的很奇怪..我已经试过了,但没有用。会不会是因为我使用了 Players.Name、Players.Name 而不是 p1.Name、p2.Name?
    • @Jonathan - 哈,是的,只是在更新我的答案以表明这一点。
    • 现在说得通了。感谢您的帮助!
    【解决方案2】:
    select GameID, p1.name playerOneName,p2.name playerTwoName from
    games inner join players p1 on games.playerOneID=p1.id
    inner join players p2 on games.playerTwoID=p2.id
    order by GameID asc;
    

    【讨论】:

      猜你喜欢
      • 2012-04-25
      • 2012-03-06
      • 2013-08-06
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2021-11-29
      相关资源
      最近更新 更多