2013-05-05 75 views
0

我想使用GROUP BY而不删除重复项。我的表看起来像这样:MySQL GROUP BY不删除重复项

+----+-----+-----+ 
|user|guess|score| 
+----+-----+-----+ 
|abc |12345|5 | 
|def |67890|8 | 
|ghi |11121|5 | 
|jkl |31415|13 | 
|mno |16171|4 | 
|pqr |81920|13 | 
+----+-----+-----+ 

每当我做SELECT user, score FROM guesses GROUP BY score,我得到这个:

+----+-----+ 
|user|score| 
+----+-----+ 
|mno |4 | 
|abc |5 | 
|def |8 | 
|jkl |13 | 
+----+-----+ 

而且我想这个(见下文),其中重复的按字母顺序排列。

+----+-----+ 
|user|score| 
+----+-----+ 
|mno |4 | 
|abc |5 | 
|ghi |5 | 
|def |8 | 
|jkl |13 | 
|pqr |13 | 
+----+-----+ 

我正在做一个猜测的高分数系统,但如果它删除重复项将不公平。

您认为这可能与PHP解析它的方式有关吗?我使用phpMyAdmin的,所以应该显示正确的输出...

+3

你想用GROUP BY实现什么? – Ejaz 2013-05-05 16:43:39

+3

您显示的示例表没有名为“chars”的列。很难理解你期望的查询结果是什么。 – 2013-05-05 16:46:15

+0

这是'group by'的基本目的之一:将重复值减少为单个值。你究竟想达到什么目的? – 2013-05-05 17:23:02

回答

5

那么如果你只是希望它按分数进行排序,然后

SELECT user, score FROM guesses ORDER BY score 

SQLFiddle

+0

按'score',user'排序我想 - “我想要这个(下面)重复按字母顺序排列的。” – 2013-05-05 17:23:42

+0

@MarkBannister是的,你是对的。 – 2013-05-05 17:33:12

+0

谢谢!这是解决方案!我是MySQL的新手,所以我不知道所有的单词。 – user104323 2013-05-05 17:38:04

1

在我看来,你假装的是订购他们,而不是团体。在这种情况下,你的查询可以是以下几点:

SELECT user, score FROM guesses ORDER BY score ASC 

照会小比分ORDER BY score ASC手段做大,就像你向他们展示你所需的输出。

+0

大到小怎么办?我只是打算在php – user104323 2013-05-05 17:38:42

+0

中向后读取它们。在这种情况下,将'ASC'更改为'DESC' - >'ORDER BY score DESC'。 – fedorqui 2013-05-05 17:39:19

1

按指定列分组。

你想要的是按顺序排列所有记录,重复或不重复。

SELECT user, score FROM guesses order by score asc