【问题标题】:MYSQL - selecting data from one table based on the content of the other oneMYSQL - 根据另一张表的内容从一张表中选择数据
【发布时间】:2020-04-08 11:18:56
【问题描述】:

所以,我有一个包含 2 个表的数据库,其中包含人们竞争、玩游戏的详细信息。总共 15 名玩家,每周都会向数据库添加新游戏。

表 1(名称:PlayerList)

PlayerID | PlayerNickname
1          AaAa
2          Baba
3          Caca
4          Dada
5          EaEa
...

表 2(名称:GamesHistory)

GameDate | Position1 | Position2 | Position3

2019-01-02 AaAa        CaCa        Baba
2019-01-03 Eaea        CaCa        Dada
2019-01-04 Dada        Baba        CaCa
2019-01-05 AaAa        Eaea        Baba
2019-01-05 Dada        Aaaa        Eaea
...

我正在寻找一个查询,它允许我仅选择具有特定 PlayerID(例如 4)的玩家在其中占据 3 个位置中的任何一个的游戏(记录)。

【问题讨论】:

    标签: mysql sql


    【解决方案1】:

    您可以通过以下方式加入:

    select g.*
    from GamesHistory g
    inner join PlayerList p 
        on p.PlayerNickName in (g.Position1, g.Position2, g.Position3)
    where p.PlayerID = 4
    

    旁注:您可能应该将玩家的 id 存储在游戏表中,而不是他们的姓名。在现实世界中,名称不能保证是唯一的,而玩家的 id 似乎(并且应该)是玩家表的主键,这使得它非常适合用作游戏表中的外键。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2016-09-23
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2023-01-09
      相关资源
      最近更新 更多