我目前正在用 PHP 创建一个页面,该页面将在我的网站的高分中显示用户及其排名。
但是,我有一个领域与其他领域不同,并且没有按预期运行。
这是我的桌子:
-- ----------------------------
-- Table structure for `playerstats`
-- ----------------------------
DROP TABLE IF EXISTS `playerstats`;
CREATE TABLE `playerstats` (
`uid` int(11) NOT NULL DEFAULT '0',
`gamelevel` int(11) NOT NULL DEFAULT '0',
`overall` int(11) NOT NULL DEFAULT '0',
`overallxp` bigint(20) NOT NULL DEFAULT '0',
KEY `uid` (`uid`)
) ENGINE=MyISAM DEFAULT CHARSET=latin1;
...以及一些示例数据:
INSERT INTO `playerstats` VALUES ('14950', '123', '1495', '129825211')
INSERT INTO `playerstats` VALUES ('28967', '124', '1495', '127168799')
INSERT INTO `playerstats` VALUES ('95848', '121', '1495', '108481173')
这是我的查询:
SELECT count(*) + 1 FROM (SELECT uid, overall, overallxp, gamelevel FROM playerstats GROUP BY playerstats.uid) AS x WHERE overall > (SELECT overall FROM playerstats WHERE uid = ". $userid .")"
...和 $userid 是:
$userid = (int) $_GET['searched'];
现在,当我导航到 userid14950 的个人高分时,它会显示该用户的正确总体排名,因为他们是总体总体 xp 最高的人。但是,当我访问 userid28967 或 userid95848 的个人高分时,由于某种原因,它们的总体排名与 userid14950 相同(很可能是因为我没有考虑到总体结果相同的用户)。
我的问题是:如果两个(或更多)用户共享相同的整体,我将如何做到这一点,他们会显示正确的排名,而不是重复的排名?
就是这样。
很感谢任何形式的帮助 :)
谢谢,
马克