2011-12-16 68 views
1

是的,有很多类似的问题,但我真的无法解决我的问题。不幸的是,我没有足够的知识去理解类似问题的答案来解决我的问题^^。高分表 - 如何给每位用户最高分数?

我有id,name,score,ip变量。我不在乎身份证或IP变量..

我的查询是这样的;

$query = "SELECT * FROM highscores ORDER BY score + 0 DESC LIMIT 10"; $result = mysql_query($query);

这给higscore表,但是,也有同一用户的不同的分数。我想要显示每个用户的最高分数。

我甚至不知道为什么我的代码中有+0。为什么如果我删除它表不显示为desc。

回答

3

下面的查询会给你每个球员的名字和他的最好成绩:

SELECT name, MAX(score) FROM highscores GROUP BY name ORDER BY MAX(score) DESC LIMIT 10 
+0

我以前已经尝试过,不幸的是它给了我一个未定义的偏移错误。我想我应该在内联查询中创建一个查询,或者像这样首先定义这些变量。 – 2011-12-16 01:27:57

0
$query = "SELECT * FROM highscores ORDER BY ABS(score) DESC LIMIT 10"; 

这应该允许您运行不带零的查询。

至于从列表中删除重复的用户分数,要么只记录每个用户的最佳分数,要么做一些进一步处理以将它们从列表中移除。循环播放结果并仅挑选每个用户的最高分数将非常简单。

+0

是的,有ABS,我可以没有零运行查询。但我不知道为什么别人不使用abs或零,但我应该^^。 是的,我想我必须创建一个更多的查询来为同一用户选择最佳分数。但我不知道如何去做。 – 2011-12-16 01:32:31