如何使用WHERE和AND根据另一个特定值从表中提取特定值?

时间:2018-10-03 18:08:48

标签: php mysqli

我在SELECT语句中使用WHERE和AND命令提取特定数据时遇到问题。此问题如下:

我有一个名为“ solo_leaderboard”的表。在此表中,我存储了游戏俱乐部中所有游戏的高分值。我想将所有高分保留在该表中,因为为每个游戏创建一个单独的表似乎很荒谬。我使用此表填充HTML页面,显示每个游戏的前5个得分。一个人一次只能获得前5名的得分。到目前为止,这部分效果很好。

我的主要问题是我的代码是从整个表中仅提取一个人的高分,并仅在适用于所述游戏的情况下显示它。例如,某人在Sega Dreamcast的“疯狂出租车”中的最高评分为3111,因此即使他们在“高速公路”列表中排名第二,他们在Atari的“高速公路”中的高分18也不会显示在“高速公路”列表中。

我不希望一个人多次出现在同一排行榜上,但我希望他们出现在其他排行榜上。

这是我的表架构和相应的php代码:

  • id-int(10)
  • 游戏系统-varchar(30)
  • 游戏-varchar(30)
  • 名称-varchar(40)
  • 得分-int(10)
  • 日期-日期
  • 年级-varchar(5)
  • whois-枚举
 $result = mysqli_query($conn,"SELECT * FROM solo_leaderboard x WHERE game 
    LIKE '%Freeway%' AND score >= ALL
        (SELECT score FROM solo_leaderboard y
            WHERE y.name=x.name
              AND score>0) ORDER BY score DESC LIMIT 5");

1 个答案:

答案 0 :(得分:0)

在嵌套的SELECT语句的末尾添加了“与游戏类似的'%Freeway%',我已经有效地解决了该问题。

$result = mysqli_query($conn,"SELECT * FROM solo_leaderboard x WHERE game LIKE '%Freeway%' AND score >= ALL    (SELECT score FROM solo_leaderboard y
        WHERE y.name=x.name
          AND score>0 AND game LIKE '%Freeway%') ORDER BY score DESC LIMIT 5");