我在SELECT语句中使用WHERE和AND命令提取特定数据时遇到问题。此问题如下:
我有一个名为“ solo_leaderboard”的表。在此表中,我存储了游戏俱乐部中所有游戏的高分值。我想将所有高分保留在该表中,因为为每个游戏创建一个单独的表似乎很荒谬。我使用此表填充HTML页面,显示每个游戏的前5个得分。一个人一次只能获得前5名的得分。到目前为止,这部分效果很好。
我的主要问题是我的代码是从整个表中仅提取一个人的高分,并仅在适用于所述游戏的情况下显示它。例如,某人在Sega Dreamcast的“疯狂出租车”中的最高评分为3111,因此即使他们在“高速公路”列表中排名第二,他们在Atari的“高速公路”中的高分18也不会显示在“高速公路”列表中。
我不希望一个人多次出现在同一排行榜上,但我希望他们出现在其他排行榜上。
这是我的表架构和相应的php代码:
$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");
答案 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");