2013-05-05 84 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