我在 SELECT 语句中使用 WHERE 和 AND 命令提取特定数据时遇到问题。此问题如下:
我有一张名为"solo_leaderboard"的表。正是在这个表中,我存储了游戏俱乐部中所有游戏的高分值。我想保留此表中的所有高分,因为为每个游戏创建一个单独的表似乎很荒谬。我使用此表填充显示每个游戏的前 5 名分数的 HTML 页面。一个人一次只能在每场比赛的前 5 名中获得一个分数。到目前为止,这部分工作得很好。
我的主要问题是我的代码只从整个表格中提取一个人的高分,并且只有在适用于所述游戏时才显示它。例如,一个人在世嘉 Dreamcast 的《疯狂出租车》中获得了 3111 分的最高分,因此他们在雅达利高速公路中的 18 分的高分不会显示在高速公路列表中,即使他们在高速公路列表中排名第二。
我不希望一个人多次出现在同一个排行榜上,但我确实希望他们出现在其他排行榜上。
这是我的表架构和相应的 php 代码:
- ID - int(10(
- 游戏系统 - 瓦尔查尔(30(
- 游戏 - 瓦尔查尔(30(
- 姓名 - 瓦尔查尔(40(
- 分数 - 国际(10(
- 日期 - 日期
- 年级 - 瓦尔查尔(5(
- 谁是 - 枚举
$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");
在我的嵌套 SELECT 语句末尾添加了"AND 游戏,就像'%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");